最新版:新闻类网页正文通用抽取器

优采云 发布时间: 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

  通讯

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线