日期:2014-05-16  浏览次数:21021 次

ASP中,能否使用mshtml等,处理html得到并分析DOM树
使用ASP,得到一网页的源代码。现希望用ASP分析源代码,找出该网页的正文文本。

实现这一功能,目前常见的做法是 通过分析网页文本密度,找出正文区域。
JAVA等一般都有htmlparser等开源的解析器,得到DOM树后,分析找到正文所在节点

ASP下,如何找出网页正文文本?
ASP中,能否使用mshtml或其他什么组件等,处理html得到并分析DOM树??

或 其他方法、思路, 请不吝赐教,多谢。
------解决方案--------------------
html不是一棵dom树吗?
------解决方案--------------------
一份合法的html就是一份良构的xml?至少对xhtml如此
------解决方案--------------------
有第三方方相关COM组件的,只是不是很强大.
------解决方案--------------------
msxml试过了吗
------解决方案--------------------
抓取页面,使用正则,得到正文
------解决方案--------------------
引用:
Quote: 引用:

抓取页面,使用正则,得到正文


不同的网站,模板不同。可能正则就不同了。

我是希望找到一种方法,能采集sina 的页面,也能采集sohu的。而不需要去改程序,或正则。需要自动识别出正文。

只能可惜的告诉你,这想法不太现实,我想问你,就算你能分析成树了,你又如何确定不同网址不同网页他的内容,你怎么知道哪些才是他的正文?html的标签是什么里都可以放的,不一定是正文才能放
------解决方案--------------------
你的要求太高了,不现实
------解决方案--------------------
抓取页面,用正则才是正道,正则比用解析htmldom组件 效率高多了
------解决方案--------------------
搜索引擎,或一些爱好者开发的爬虫程序
它们获取的是整个页面中的文字内容,而不是你说的正文。如果你要获取这种内容的话,你的想法是可以现实的。
------解决方案--------------------
引用:
Quote: 引用:

抓取页面,用正则才是正道,正则比用解析htmldom组件 效率高多了


就是不知道,正则如何实现 从一内容页里,找出正文 ??
正则如果能实现,当然是最好了。

正则能不能找的到,是写正则的问题,通过正则取肯定可以的
一般也是根据标签的 ID,class来定位的
象一些抓新闻,小说的工具也都是通过s配置正则,一个网站对应一个正则
------解决方案--------------------
引用:
 
id class 这些,不同网站,都不同了,可能很难用得上。那种采集系统,我一直在用,十几年前优化到现在,目前想实现无规则采集。用正则实现还没有什么思路。正则应该能实现按行分析,但不知道如何提取节点信息。如果实现不了,需要用asp写一个html 解析函数,根据w3c,估计难度不会小。

我不明白你的意思 "目前想实现无规则采集", 即使你用分析整个文档的节点结构,也要有 规则来定位,
就像你说的 "id class 这些,不同网站,都不同了"
------解决方案--------------------
组件用IE组件 internetexplorer.application
不好意思前没看到,用正也可以分析dom结构

------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

抓取页面,使用正则,得到正文


不同的网站,模板不同。可能正则就不同了。

我是希望找到一种方法,能采集sina 的页面,也能采集sohu的。而不需要去改程序,或正则。需要自动识别出正文。

只能可惜的告诉你,这想法不太现实,我想问你,就算你能分析成树了,你又如何确定不同网址不同网页他的内容,你怎么知道哪些才是他的正文?html的标签是什么里都可以放的,不一定是正文才能放





感谢版主亲自回复。

我的想法,应该是有一定可行性的。前期调研来看实现的思路至少有3种。其实他们的算法都比较成熟了,比如搜索引擎,或一些爱好者开发的爬虫程序。都是不需要设置采集规则的,爬虫能自动完成数据清理。

常见的就是分析DOM树,文本密度算法+链接密度算法,某节点下文本密度高,文本字数大于100等阀值,这个节点根据文本和链接密度,会有一个权重,他的兄弟权重+一起,就是父节点权重。权重高的父节点最可能是正文区域,可确定正文大致区域,正文节点基本在同一父节点,再判断下父节点的兄弟,一般都锁定正文了。结合一些边界阀值判断去掉正文里的SCRIPT 广告 这些。结合什么神经网络算法(他们说的),让程序能自动调整一些边界阀值,能把网页正文,甚至正文下面的评论内容都过滤出来。如果2个或多个区域的权重阀值都达到某一经验值,多个区域都算正文。


已经有不少小偷采集程序,都这么搞了,不需设置采集规则。
他们仅仅通过一页,就能抓出正文。准确性不可能100%,但如果不是专门特殊构造的正文,一般是逃不过程序的判断的。我希望在试采集阶段,分析多个页面,得出网页的模板,自动生成采集规则。以便后面在程序无法抓出正文的时候,调用该网站的采集规则来过滤模板。力争将准确性由99.9999%提高到100%


Http.responseTEXT已经获取到了HTML源码,不知道ASP怎么来分析这棵树?  求指点。


呵呵,你可以去下载一些你认为不需要采集规定想小偷程序来看看就知道了

至于你说的爬虫一类的,怎么说呢,那是他自己的一套算法,是网站必须符合他的算法,很多网站为了提高自己的让该搜索引擎收录,以及提高权重