抓取网页新闻(自动化抽取新闻类网站正文的算法论文——《基于文本及符号密度的网页正文提取方法》)

优采云 发布时间: 2021-10-23 05:19

  抓取网页新闻(自动化抽取新闻类网站正文的算法论文——《基于文本及符号密度的网页正文提取方法》)

  项目来源

  这个项目的发展源于我在知网找到的一篇关于自动提取新闻网站文本的算法论文——《基于文本和符号密度的网页文本提取方法》

  本文中描述的算法看起来简洁、清晰且合乎逻辑。但是由于论文只讲了算法原理,并没有具体的语言实现,所以我按照论文用Python实现了这个提取器。我们还使用了今日头条、网易新闻、有民星空、观察者网、凤凰网、腾讯新闻、ReadHub、新浪新闻进行测试,发现提取效果非常好,几乎达到了100%的准确率。

  项目状态

  在论文中描述的文本提取的基础上,我添加了标题、发布时间和作者的自动检测和提取功能。

  最终输出效果如下图所示:

  

  目前,这个项目是一个非常非常早期的Demo。发布是希望我们能尽快得到大家的反馈,让我们的开发更有针对性。

  本项目命名为extractor,而不是crawler,避免不必要的风险。因此,本项目的输入是HTML,输出是字典。请使用合适的方法获取目标网站的HTML。

  本项目目前没有,以后也不会提供主动请求网站 HTML的功能。

  如何使用

  项目代码中的GeneralNewsCrawler.py 提供了本项目的基本使用示例。

  

  在Elements标签页找到标签,右键,选择Copy-Copy OuterHTML,如下图

  

  from GeneralNewsCrawler import GeneralNewsExtractor

extractor = GeneralNewsExtractor()

html = '你的目标网页正文'

result = extractor.extract(html)

print(result)

  对于大多数新闻页面,上述书写方法可以解决问题。

  但是,有些新闻页面下面会有评论,评论中可能会有长篇评论。它们看起来更像文本而不是真正的新闻文本。因此,extractor.extract()方法也有一个默认参数noise_mode_list,用于网页预处理。提前删除整个评论区。

  noise_mode_list 的值是一个列表。列表中的每个元素都是XPath,对应的是你需要提前去除的可能会造成干扰的目标标签。

  比如下评论区对应的Xpath就是//div[@class="comment-list"]。所以在提取观察者网络的时候,为了防止评论干扰,可以加上这个参数:

  result = extractor.extract(html, noise_node_list=['//div[@class="comment-list"]'])

  test文件夹中网页的提取结果请查看result.txt。

  已知问题 目前此项仅适用于新闻页面信息抽取。如果目标网站不是新闻页面,或者今日头条中的专辑类型文章,提取结果可能不符合预期。可能有一些新闻页面提取结果中的作者是空字符串。这可能是由于 文章 没有作者或现有正则表达式未涵盖这一事实。Todo 沟通

  

  验证消息:GNE

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线