最新版:新闻类网页正文通用抽取器
优采云 发布时间: 2020-09-05 17:06新闻网页文字的通用提取器
项目起源
该项目的开发源于我在HowNet上发现的关于自动提取新闻网站文本的算法论文-“基于文本和符号密度的网页文本提取方法”
本文描述的算法看起来简洁,清晰且合乎逻辑。但是由于本文仅讨论算法的原理,因此没有特定的语言实现,因此我根据本文使用Python来实现此提取器。使用头条,网易新闻,Youmin Star,Observer,凤凰卫视,腾讯新闻,ReadHub,新浪新闻进行了测试,发现提取效果非常好,准确率几乎为100%。
项目状态
在本文描述的文本提取的基础上,我添加了标题,出版时间和文章作者的自动检测和提取功能。
最终的输出效果如下图所示:
当前,该项目是一个非常非常早期的演示。发行该版本是希望我们能够尽快获得大家的反馈,以便我们可以开发更具针对性的产品。
此项目的名称是提取程序,而不是采集器,以避免不必要的风险。因此,该项目的输入是HTML,而输出是字典。请使用适当的方法来获取目标网站的HTML。
该项目当前不存在,将来也不会提供主动请求网站 HTML的功能。
使用方法
项目代码中的
GeneralNewsCrawler.py提供了此项目的基本用法示例。
在“元素”标签页上找到标签,右键单击并选择“复制-复制OuterHTML”,如下图所示
from GeneralNewsCrawler import GeneralNewsExtractor
extractor = GeneralNewsExtractor()
html = '你的目标网页正文'
result = extractor.extract(html)
print(result)
对于大多数新闻页面来说,以上文字可以解决问题。
但是,某些新闻页面下方会有评论。注释中可能收录长形式的注释。与真实新闻文本相比,它们看起来更像文本。因此,extractor.extract()方法还具有默认参数noise_mode_list,该参数在网页预处理期间预先在“删除注释”区域中使用。
noise_mode_list的值是一个列表。列表中的每个元素都是XPath,它与您需要预先删除的目标标签相对应,并且可能会造成干扰。
例如,与Observer.com下的注释区域对应的Xpath是// div [@ class =“ comment-list”]。因此,在提取观察者网络时,为了防止评论受到干扰,可以添加以下参数:
result = extractor.extract(html, noise_node_list=['//div[@class="comment-list"]'])
有关测试文件夹中网页的提取结果,请检查result.txt。
已知问题
当前,该项目仅适用于从新闻页面提取信息。如果目标网站不是新闻页面,或者不是今天的标题中的专辑类型文章,则提取结果可能不符合预期。在某些新闻页面中,提取结果中的作者为空字符串。这可能是因为文章本身没有作者,或者没有被现有的正则表达式覆盖。
Todo
通讯