可以使用的方法:
1.正则表达式
正则表达式可以准确的抽取某一固定格式的页面,但面对形形色色的HTML,使用规则处理难免捉襟见肘。
2.joyhtml
JoyHTML的目的是解析HTML文本当中的链接和正文,利用超链接密度法为主要判断依据的标记窗算法,采用DOM树解析模式。
3.boilerpipe
这个Java类库提供算法来探测和删除在一个网页中主文本内容旁多余的重复内容。它已经有提供特殊的策略来处理一些常用的功能如:新闻文章提取
4.readability
大名鼎鼎的arc90实验室的Readability,该算法已经商业化实现了firefox,chrome插件,及flipboard,并且已经集成进了safari浏览器。未详细测试,大致测试感觉准确率应该至少在90%以上。该算法需要解析DOM树,因此稍执行效率稍微慢一些。大致过程为,先解析DOM树,所有标签小写。然后去除所有“script”标签内容,再通过一对正则表达式的配合提取。具体算法还未看。其插件中包含算法JAVASCRIPT源码。
源码地址如下:
官方网站http://www.readability.com/
c#实现一:https://github.com/marek-stoj/NReadability(亲测,效果不错)
c#实现二:http://code.google.com/p/nreadability/(未亲测)
php实现一: http://code.fivefilters.org/p/php-readability/(未亲测)
php实现二:https://github.com/feelinglucky/php-readability(未亲测)作者主页:http://www.gracecode.com/archives/3061/
node.js版:https://github.com/arrix/node-readability/(未亲测)
5.cx-extractor
哈工大的《基于行块分布函数的通用网页正文抽取》该算法开源网址为http://code.google.com/p/cx-extractor/,效果为亲测,文章中呈准确率95%以上,对1000个网页抽取耗时21.29秒。看了文章感觉不错,无需html解析,效率应该会高些。
由于不解析DOM树,所有速度很快。 带来的缺点就是就是正文内容比较集中的网页效果很好,比如新闻之类的,但是对于论坛帖子之类的网页就较差。