网页新闻抓取(SEO过度的页面提取方法,准确率挺高,依赖又少)
优采云 发布时间: 2021-09-29 10:26网页新闻抓取(SEO过度的页面提取方法,准确率挺高,依赖又少)
项目中需要采集相关行业新闻,寻找基于文本和符号密度的网页正文提取方法。准确率相当高,依赖性小。特别推荐。
该方法是论文《Method of Web Page Body Extraction based on Text and Symbol Density》的实现。有兴趣的可以去看看原论文
本文中描述的算法看起来简洁、清晰且合乎逻辑。还有一个更有用的标准:
1
2
3
4
5
Ti - LTi
SbDi = --------------
Sbi + 1
SbDi: 符号密度
Sbi:符号数量
如果节点中文本的符号出现的频率更高,符号密度SbDi的值会更小,但文档说它会更大。如何解决?
因为它在这里考虑的是一个“逻辑”文本。它不是专门为欺骗该程序而构建的文本。在普通的文章中,文章越长,标点符号就会被读取,这是很自然的。而且你可能会认为,在某个栏目中直接写上数百个标点符号的新闻,没有汉字。这种情况当然可以欺骗程序,但属于“故意构建”的坏情况。
在正常的文章中,标点符号越多,正文中的文本就越多。分子和分母同时增加。显然,文本会比标点符号增长得更快,所以这个比例会增加。
根据GNE作者kingname的测试,使用该算法对今日头条、网易新闻、有民星空、观察家网、凤凰网、腾讯新闻、ReadHub、新浪新闻进行测试,几乎可以达到100%的准确率。个人使用经验,只要合理添加noise_node_list,也可以得到文本(部分SEO过度的页面除外)。
实施过程
算法实现
目前有python和nodeJS两种实现,依赖很少
python版本还提供了一个非常有用的noise_node_list参数,可以根据实际页面排除不相关的内容。
功能限制
因为它只提取新闻网页,如果你想提取其他类型的内容,它可能不起作用,但你可以尝试添加更多过滤XPath。
在线版
这里是网络版讲解使用过程
需要输入两件事:
由于没有提供爬虫功能,可以通过Chrome开发者工具的Copy OuterHTML获取页面的HTML代码和Copy XPath来获取排除的元素。
使用 Copy OuterHTML 复制整个网页的 HTML 代码。
如果提取的内容不是您想要的,您可以选择提取的元素,单击复制 XPath,然后将其粘贴到过滤器 XPath 中。它可以是多个 XPath,以逗号分隔。
输入效果
提取新闻信息
效果如下:
网络版测试 网络版提取的图片可能有防盗链功能,无法显示。
参考