高手请进,救急!!!!谢谢

问题描述

这是我做的用C#提取web信息的一段程序,但是网页的源文件是表格里嵌表格,所以比较难提取源码数据,请高手帮忙看一下,可以加我好友,我把我要提取信息的网站给你,谢谢!!!privatevoidbutton1_Click(objectsender,EventArgse){//要抓取的URL地址stringUrl=textBox1.Text;//得到指定Url的源码stringstrWebContent=GetWebContent(Url);//rtxtHtmlSrc.Text=strWebContent//取出和数据有关的那段源码intiBodyStart=strWebContent.IndexOf("colspan=13",0);intiStart=strWebContent.IndexOf("</table>",iBodyStart);intiTableStart=strWebContent.IndexOf("<tr",iStart);intiTableStartb=strWebContent.IndexOf("3E89C0",iTableStart);intiTableEnd=strWebContent.IndexOf("</table>",iTableStartb);stringstrWeb=strWebContent.Substring(iTableStart,iTableEnd-iTableStartb);//生成HtmlDocumentWebBrowserwebb=newWebBrowser();webb.Navigate("about:blank");HtmlDocumenthtmldoc=webb.Document.OpenNew(true);htmldoc.Write(strWeb);HtmlElementCollectionhtmlTR=htmldoc.GetElementsByTagName("TR");foreach(HtmlElementtrinhtmlTR){stringstrID=tr.GetElementsByTagName("TD")[0].InnerText;stringstrName=tr.GetElementsByTagName("TD")[1].InnerText;//插入DataTableAddLine(strID,strName,"0");////插入数据库//InsertData(dt);dataGridView1.DataSource=dt.DefaultView;}

解决方案

解决方案二:
up
解决方案三:
分析字符串没什么难度就是麻烦点~~~可以考虑正则或者把它弄成XML
解决方案四:
帮顶
解决方案五:
<tdheight="30"colspan="6"><fontcolor="#FFFFFF">1/K1 平海路→小河路登云路口</font></td></tr><tralign="center"valign="top"bgcolor="FFECC3"><tdwidth="5%"height="30">序号</td><tdwidth="17%"height="30">站点名称<br>BusStopsName</td><tdwidth="46%"height="30">经过线路<br>BuslinesPassingBy</td><tdwidth="12%"height="30">副站名<br>SubnameOfTheBusstop</td><tdwidth="20%"height="30">辅助标注站名<br>SupplementaryNameofBusStops</td></tr><tralign="center"bgcolor="ECF4F9"><tdheight="30">1</td><tdheight="30"><tablewidth="100%"border="0"cellspacing="0"cellpadding="0"><tr><tdwidth="44%"align="center">平海路</td></tr></table></td><tdheight="30"><tableborder=0width="100%"><tr><tdwidth="25%"align="center"><ahref="line_search.jsp?line_id=3&line_name=K4"target="_blank">K4</a></td><tdwidth="25%"align="center"><ahref="line_search.jsp?line_id=895&line_name=27"target="_blank">27/K27</a></td><tdwidth="25%"align="center"><ahref="line_search.jsp?line_id=1307&line_name=K16"target="_blank">K16</a></td><tdwidth="25%"align="center"><ahref="line_search.jsp?line_id=1321&line_name=K286"target="_blank">K286</a></td></tr><tr><tdcolspan="25%"align="right"><ahref="line_more.jsp?stop_name=平海路"target="_blank">更多线路</a></td></tr></table></td><tdheight="30">市总工会</td><tdheight="30"></td></tr><tralign="center"bgcolor="ECF4F9"><tdheight="30">2</td><tdheight="30"><tablewidth="100%"border="0"cellspacing="0"cellpadding="0"><tr><tdwidth="44%"align="center">十四中</td></tr></table></td><tdheight="30"><tableborder=0width="100%"><tr><tdwidth="25%"align="center"><ahref="line_search.jsp?line_id=1246&line_name=K73"target="_blank">K73</a></td><tdwidth="25%"align="center"><ahref="line_search.jsp?line_id=1257&line_name=49"target="_blank">49/K49</a></td><tdwidth="25%"align="center"><ahref="line_search.jsp?line_id=1793&line_name=45"target="_blank">45/K45</a></td><tdwidth="25%"align="center"><ahref="line_search.jsp?line_id=1913&line_name=1"target="_blank">1/K1</a></td></tr><tr><tdcolspan="25%"align="right"><ahref="line_more.jsp?stop_name=十四中"target="_blank">更多线路</a></td></tr></table>
解决方案六:
这些是其中的一小段,下面还很多,我想提取的是stop_name=??后面??的内容,比如平海路,十四中,希望高手可以指点,谢谢..
解决方案七:
用正则吧,比较方便
解决方案八:
用正则来匹配就很容易提取了
解决方案九:
这种问题一般就2种方式,1是用正则;2是一个一个字母遍历下去找初始匹配依次类推.
解决方案十:
up~正则
解决方案十一:
如果不考虑性能问题,也可以简单点先用String.IndexOf()取得第一个"stop_name="的索引,然后把后面的内容截取出来;再把前面已经截取的部分SubString掉,对剩下的内容继续执行String.IndexOf()直到没有匹配伪代码如下:Strings="..........html内容........";inti=0;while(s.IndexOf("stop_name=")>=0){......}
解决方案十二:
用split,"stop_name="为分割关键字
解决方案十三:
up正则
解决方案十四:
stringcontent="<ahref="line_more.jsp?stop_name=十四中"target="_blank">";stringregex="<a[\s\S]+?stop_name=(?<keyword>.*?)"[\s\S]+?>";System.Text.RegularExpressions.RegexOptionsoptions=((System.Text.RegularExpressions.RegexOptions.IgnorePatternWhitespace|System.Text.RegularExpressions.RegexOptions.Multiline)|System.Text.RegularExpressions.RegexOptions.IgnoreCase);System.Text.RegularExpressions.Regexreg=newSystem.Text.RegularExpressions.Regex(regex,options);System.Text.RegularExpressions.MatchCollectionresultes=reg.Matches(content);foreach(System.Text.RegularExpressions.Matchiteminresultes){//item.Groups["keyword"].Value就为其stop_name的值//Response.Write(item.Groups["keyword"].Value);//MessageBox.Show(item.Groups["keyword"].Value);}

时间: 2024-08-08 04:00:24

高手请进,救急!!!!谢谢的相关文章

SSH环境 jsp url跳转,带中文参数乱码问题 高手请进,谢谢

问题描述 jsp页面<a href="main!home.action?colName=politics&colValue=党员">党员资料</a>传到action中 colValue就是乱码 我用了spring自带的乱码过滤器 没用我用的SSH框架 显示层采用struts2 action是用交互属性getter setter方法获取数据除了new String (colValue.getBytes("iso-8859-1"),&qu

visual studio-C#高手请进!在程序里打开另一程序 并且添加已有工程Add Existing Item

问题描述 C#高手请进!在程序里打开另一程序 并且添加已有工程Add Existing Item 我想写一个程序 在这个程序里打开另一个程序 并且在打开的程序里添加已有工程Add Existing Item,请问有没有什么方法 或者怎么写啊?我看word和excel都有方法 ~~~我是新手 问的可能不详细的,看明白请回答 谢谢啊~~~

php curl采集高手请进

问题描述 php curl采集高手请进 http://www.lecai.com/ 这个网站怎么用php/url技术进行模拟登录?求参考程序..... 解决方案 我大致看了一下,个人习惯使用Snoopy.class.php模拟登陆,觉得不好可以忽略 POST http://www.lecai.com/user/ajax_login.php HTTP/1.1Host: www.lecai.comUser-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:3

微积分-vc 数字图像处理高手请进!

问题描述 vc 数字图像处理高手请进! 图像的梯度锐化 看到上面的公式,我叫一个晕,请问这是哪里才能学到呀?什么意思呀?还需要学习微积分吗? 解决方案 这个公式你仔细琢磨就懂了,第一个实际上是数字的差分,求得是点(i,j)的x和y方向的微分值的和,这里理解为这个像素点的梯度值.第二个就是锐化的过程,当梯度值大于某个阈值时,锐化的结果即此点的梯度值,若梯度小于那个阈值,则锐化的结果是原像素的值. 像这类比较基础的图像处理方法,建议你看一下清华大学章毓名教授写的<图像工程>. 解决方案二: 数字图

apt-ubuntu 高手请进,yara not found

问题描述 ubuntu 高手请进,yara not found 用apt-get intstall yara后,还是出现了configure: error: yara not found 请问为什么会这样,好烦啊,在线求高手解答 解决方案 spt-get install 是安装命令, 如果系统没有找到 yara 的安装包,就会这样. 查查 ubuntu 的在线安装配置. 解决方案二: 一个是看是否安装成功,其次看安装的yara能否执行,有没有错误.

c语言-C语言高手请进:这个分块求和C语言程序问题出在哪里??对一组无规律数据按正数、负数和零分块求和,

问题描述 C语言高手请进:这个分块求和C语言程序问题出在哪里??对一组无规律数据按正数.负数和零分块求和, 对一组无规律数据按正数.负数和零分块求和,即要求将序列中相邻的正数.零及负数分块累加输出,格式要求: 源数据: 2,3,8,6,0,0,-2,-1,-4,0,5,6,7,-5,-2,...(共100个) 整理输出为: 2,5,13,19,0,0,-2,-3,-7,0,5,11,18,-5,-7...(共100个) 以下程序哪里出了问题?我搞了2星期,总是得不到完整输出: int main(

高分悬赏 请大神指导-VBA高手请进 懂得webbrowser

问题描述 VBA高手请进 懂得webbrowser 请问如何通过VBA能够获取网页弹出窗体的Docuement对象,我是要操作弹出窗体里面的一线控件完成自动复制! 我现在可以获取到主页面的Document对象.

hbm-Hibernate 帅哥高手请进...关于Hibernate的三表关联,在线等...

问题描述 Hibernate 帅哥高手请进...关于Hibernate的三表关联,在线等... 表1: File (FID,Fname) 表2: UserGroup(GID,Gname) 表3: ActionPermissions(PID,Pname) 表4: File_Group_Permissions(ID,FID,GID,PID) 用四个表完成给某个文件指定用户组每个用户组指定权限,一文件对应多个用户组 每个用户组针对这个文件有不同的操作权限.Hibernate应该如何配置,表结构是否合理

vb参数传递-VB高手请进!在线等。。——shell使用dos命令时参数的传递

问题描述 VB高手请进!在线等..--shell使用dos命令时参数的传递 怎样才能将%LOGPATH%所替代的内容传递到其中? (不要写成调用bat的形式) 解决方案 不行的,%logpath%不能包在括号里,应该这样 Shell "cmd /k mkdir "+LOGPATH+" > nul 2>&1", vbNormalNoFocus vb调用dos是直接运行引号内的,而不给某一变量赋值.另外包在百分号内的是bat变量而不是vb的变量 解决