常用网页正文提取方法总结

最近研究这块内容头发快掉完,写一些东西来梳理梳理,以后写论文可能用得上。

1.基于模板的方法
依赖html文档内部结构特征来完成数据抽取。常用的一些有正则、xpath、selector css、beautifulsoup等等。
优点:针对特定的网页模式,实现简单(可以自己写或者借助半自动工具Google开发者工具、xpath helper插件等),定位准确。
缺点:对于不同的网页模式或者网页结构需要重写模板,且维护代价很大,健壮性很差。
1.1
另外一种基于模板的方法是将同源页面的相同部分去掉从而获取差异的部分提取出来。通用性很好但是会增加丢失页面正文的可能性,比如两篇文章讨论部分相同部分会被误删,或者是不同的噪声会被保留。类似成熟的算法有des和roadrunner等。

2.基于统计的方法
从网页标签序列中找出相应的文本序列,由于网页正文与非网页正文的长度、标签数量,继而统计出文本密度、链接密度,以统计的方式提取正文。
优点:实现简单,不需要具体网站具体分析,通用性较好。
缺点:识别准确率有限,可能会提取到正文附近文字例如版权声明、备注等。

3.基于深度学习、机器学习、神经网络的方法
(咱也没用过,咱也不敢说,反正牛逼就完事儿了。)
优点:提取准确。
缺点:训练数据庞大,较前面几种更复杂。

4.网页信息提取开源库
使用库里编写好的方法直接调用,提取标题、正文、图片等。我使用过的是Goose-extractor和newspapers两个库,在python3.5环境下。
优点:方便、快速、较准确。
缺点:为什么说较准确,因为我在使用提取某种特殊的网页时候出了错误!这个网页正文之间穿插了一些图片,然鹅goose只提取了正文图片隔开前面的文字,有待改进。

5.基于视觉分块的提取算法
从用户对网页的视觉感受出发,依靠网页中的节点样式对页面进行分块,寻找最低层容器节点的各个文本节点进行合并,计算信息量并比较最低层容器节点与其兄弟节点、父节点的信息量,从而选择出能构成文本块的节点。
优点:准确性较高。
缺点:计算量过大,且一些网页分块过散,视觉特征复杂,布局不规范等都会影响提取。

你可能感兴趣的:(笔记)