全球旧事资料 分类
任意网页文章内容提取(采集)算法
标签:采集程序开发201404091910星期三
做过采集的人都知道,要采集一个网站,就要根据网站结构写正则,这是最传统的做法,这种做法优点就是采集精度可以做到非常细,可以采集任意结构的网站,不过这种做法也非常的具有局限性,一套规则只能使用于一个网站,遇上网站结构变动又要重新分析,调整规则,非常被动。
我就一直在想,如果程序可以做到人那样的识别程度,那就可以采集任意网站正文内容了,上网找了下,果然已经有很多类似的算法了,主要有以下几种:
1、基于Dom树1、利用开源包HTMLTidy处理HTML,更正其中错误或不规范的地方;2、根据较规范的HTML建立Dom树,然后递归遍历Dom树,比较并识别各种非正文信息,包括广告、链接群和非重要节点信息;广告信息移除:需要建立经常更新的广告服务器列表;链接群移除:计算网页包含的链接个数同非链接的词个数的比例;3、非正文信息移除后,Dom树中剩余的内容就是正文信息,直接从余下的树节点中抽取。存在问题:Dom树的建立对HTML是否良构要求较高,而且树的建立和遍历时空复杂度高,树遍历方法也因HTML标签不同会有差异。
2、基于网页分割找正文块1、网页正确分割后,正文提取工作简化为对正文块的判断;2、分割是利用HTML标签中的分隔线以及一些视觉信息(如文字颜色、字体大小、文字信息等)。存在问题:不同网站的HTML风格迥异,分割没有统一方法,通用性难以保证。
3、基于标记窗1、先取出文章标题;2、两个标签及其内部包含的文本合在一起称为一个标记窗(比如h1texth1中text就是标记窗内的文本),取出所有标记窗内的文字;3、对文章标题和每个标记窗内的文本分词;4、计算标题序列与每个标记窗文本序列的词语距离L,如果L小于一个阈值,则将此标记窗内的文本看做是正文文本。存在问题:标记窗的提法很好,但每个标记窗文本都要先分词,在计算词序列距离,效率?
4、基于数据挖掘或机器学习用到了文本分类、聚类、隐马模型、数据挖掘等。存在问题:简单问题复杂化。
5、基于逻辑行和最大接纳距离的网页正文抽取1、考虑人们编写网页时的一些启发规则,考虑了正文的物理位置会靠的很近;2、做出以下推论:HTML每一行都表示一个完整的语义;正文代码在物理位置上会靠的很近;正文代码的一行中大都是文字;正文代码的一行中非HTML标签的文字数量较多;正文代码的一行中超链接长度所占比率不会很大;3、凡符合上述推论的代码行被认为是一r
好听全球资料 返回顶部