asp.net 解析html,获取静态页面标签中的内容。

asp.net 解析html,获取静态页面标签中的内容。,第1张

<TR>

<TD class="UserCaption">车型<input type='hidden' value='车型' /></TD>

<TD class="ms-formbody"><SPAN id="lbModel" class="ms_input">70<input type='hidden' value='70' /></</SPAN></TD>

</TR>

如果使用表单获取,这是一种方法,如果按照你说的,在asp.net中去解析一个html,那样是得不偿失的。

如果你是用请求获取页面内容,那么什么办法都不好用。因为你不能保证对方页面的结构是否会有变化,这种变化是不可知的。保不齐他的数据不变,但是包含数据的标签变了,你的代码修改量将会让你非常头疼。

首先 用文件流 读出 这个 HTML文件

存到string中

然后搜索匹配的 字符串 <table>建议给table加上ID

因为会有好多个table

找本C#的书 看看 字符串 处理相关的章节

解析HTML最好的类还是微软自己的

在站内搜索的项目要进行HTML的解析,发现程序运行非常慢,一开始以为是lucene的问题,一测试大吃一惊,每一步lucene中AddDocument等只用了几十毫秒,而HTML解析竟然用了9秒。

日志如下:

2010-06-26 15:51:25,171 [8] DEBUG SearchSite.StartIndex - DownloadString:00:00:00.0482329

2010-06-26 15:51:34,187 [8] DEBUG SearchSite.StartIndex - ThreadParser:00:00:09.0236490

2010-06-26 15:51:34,187 [8] DEBUG SearchSite.StartIndex - DeleteDocuments:00:00:00.0000069

2010-06-26 15:51:34,203 [8] DEBUG SearchSite.StartIndex - AddDocument:00:00:00.0191071

我使用的是Winista.HtmlParser这块网上找到的HTML解析器。遂准备更换解析器,但是用“.Net HTML Parser”在google上寻找,一直没找到合适的解析器,不是太难用,就是性能比Winista.HtmlParser还差,我才想到,微软的MSHTML不就是用来解析HTML的吗?折腾这么一圈却忘了微软自家的东西,微软的东西性能肯定差不了。

添加对Microsoft.mshtml这个程序集的引用,然后编写如下代码:

IHTMLDocument2 doc = new HTMLDocumentClass()

doc.write(new object[]{pageSource})

doc.close()

Title = doc.title

Body = doc.body.innerText

再测试,哇咔咔,快的要命,只有几十毫秒,2000个帖子一会儿就爬完了。

日志如下:

2010-06-26 16:26:35,546 [8] DEBUG SearchSite.StartIndex - DownloadString:00:00:00.0400263

2010-06-26 16:26:35,562 [8] DEBUG SearchSite.StartIndex - ThreadParser:00:00:00.0257731

2010-06-26 16:26:35,562 [8] DEBUG SearchSite.StartIndex - DeleteDocuments:00:00:00.0001913

2010-06-26 16:26:35,578 [8] DEBUG SearchSite.StartIndex - AddDocument:00:00:00.0010881

HTMLDocumentClass的方法比任何一个网上找到的HTML解析器都丰富,想怎么搞就怎么搞,而且调用方法就是 *** 作Dom的方法,完全不用再去学,哇咔咔,爽呆了。

在使用的过程中遇到两个问题:

1、VS2010中引用Microsoft.mshtml之后,要修改这个引用的“嵌入互 *** 作类型”为False。

2、调用doc.write方法的时候必须通过IHTMLDocument2接口来调用,否则报错“错误的类型”,在google上搜“type mismatch HTMLDocument write”


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7440421.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-05
下一篇 2023-04-05

发表评论

登录后才能评论

评论列表(0条)

保存