首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

聊聊网页本文提取

2012-11-01 
聊聊网页正文提取从网页中提取的正文一般来说模板是最好最准确的方式,在专业术语中就是wrapper,对web归纳

聊聊网页正文提取

从网页中提取的正文一般来说模板是最好最准确的方式,在专业术语中就是wrapper,对web归纳总结出提取规则创建包装器wrapper。但由于在大多数条件下制作模板是个很烦人的工作,而且如果抓取的种子站过多,人工难以满足需求。于是自动生成模板就成为一个折衷的替代方案,但实际上自动生成的模板还是需要模板编辑确定具体的对应项,以保证其正确性。如果从语法分析去考虑,这个部分不参与人工,目前还没看到有成功的案例。
在垂直搜索中,目前看到的大多以模板为主。但由于我所做的项目虽然是垂直搜索,项目需求却要求尽可能的保证系统的通用性,于是通用正文提取就成了我必须的工作。在通用正文提取方面,JAVA开发的一个开源项目GATEhttp://gate.ac.uk/,历经几年,效果不错,也可处理中文。可惜我是玩.NET的只能靠自己了。由于项目时间紧,第一版本我采用的是定义规则的方式来完成页面内容的提取,我所需要处理的页面主要分为BLOG BBS 新闻资讯三类。一般来说在BLOG和新闻资讯中,正文内容汉字较多,而且位置集中,而广告,相关新闻,其他无用内容则为简短的汉字并本身为超级链接。因此通过此类规则推理,削除了大多数的垃圾信息及广告。但对于全英文的正文来说,这种推理就豪无意义了,幸而我的需求只需要满足中文网页。不过这种规则定义要求尽可能的满足绝大多数网页内容的规范,因此造成除了正文以外还有部分垃圾信息未被过滤。这时候就可以考虑使用噪音词过滤的方法,在互联网上的页面中,很多词汇会频繁大量出现而且与正文毫无关系,在噪音词占句子比例超过阀值的情况下,可以直接过滤句子。通过以上两种方式加上处理HTML标签的正则就能处理80%以上的新闻资讯和BLOG页面,提取相对干净的正文内容。我所用到的正则可参考:http://blog.likeshow.net/article.asp?id=55
不过以上这种方式主要以句子为单位考查web页面内容,没有很好的利用到HTML标签块的分割作用,其实一般在解析整个web页面为DOM树时,正文内容肯定包含在其中一个节点内,而这个节点往往是汉字内容最多的,再考虑邻居节点内与其的关系,就可取到标题。目前我正在尝试使用DOM解析方式来提取正文,.NET下有个开源的HTML解析组件HtmlAgilityPack,可以考虑使用,不过对于页面编码处理方面有个小BUG,可自行改正。
其实在正文提取时,还有很多比较特殊的问题,如动网论坛早期的版本采用JS输出内容,某些网站正文内容放在JS变量里,都是不太好用以上两种方式处理的。引入JS解析或直接使用WEBBROWSER控件也许是更好的解决方式,不过效率。。。。。。。。?

?

?

?

1 楼 kg_1997 2010-04-18   目前互联网上公布出来的正文提取算法,大家可以综合比较下,一起来测试下哪个更好用。



词网--北京词网科技有限公司
http://demo.cikuu.com/cgi-bin/cgi-contex



猎兔网页正文提取
http://www.lietu.com/extract/



PHP版网页正文提取
http://www.woniu.us/get_content_demo/



网页正文提取分析(DEMO)
http://61.128.196.27/txt



个人认为http://61.128.196.27/txt 这个提取最牛,基本上无论什么页面都能提取出来,而且能有效的保持原文风格、图片、链接。

2 楼 xuzhibin 2012-07-04   这里也有一个识别率还可以正文提取算法,有兴趣的同学可以去看看:http://www.qwolf.com/?p=791

热点排行