【问题标题】:How do I remove unwanted classes and tags from newspaper3k object?如何从报纸 3k 对象中删除不需要的类和标签?
【发布时间】:2020-10-07 00:17:48
【问题描述】:

我想提取新闻文章内容,我目前正在使用 newspaper3k 库:

a = Article(url, memoize_articles=False, language='en')
a.download()
a.parse()
content = a.text

但对于某些网站,图像中存在广告和文字等不需要的元素。所以我想删除那些不需要的元素和文本。有没有办法从这些标签和类中删除所有内容?

【问题讨论】:

    标签: html python-3.x web-scraping data-cleaning newspaper3k


    【解决方案1】:

    如果你想针对特定的网站做,你可以使用a.top_node,找出广告的XPath或CSS选择器,然后删除它们。

    ads = a.top_node.xpath("./foo")  # find a proper selector
    for ad in ads:
        ad.getparent().remove(ad)
    
    # and now conver top_node to text again somehow, probably using
    # OutputFormatter
    

    https://github.com/codelucas/newspaper/blob/56de65af9efbfea6293c82c0b1821e2ca9fbddaa/newspaper/article.py#L281

    也可以实现自定义DocumentCleaner 并将此逻辑放在那里。

    一般来说,这是一个很难的问题,可能是文章提取中最难的问题,如果你想以一种通用且健壮的方式来做,而不需要为每个网站编写和维护规则。开源库通常可以找到质量合理的主要内容,但它们在从文章正文中排除额外内容方面非常糟糕。请参阅https://github.com/scrapinghub/article-extraction-benchmarkhttps://github.com/scrapinghub/article-extraction-benchmark/releases/download/v1.0.0/paper-v1.0.0.pdf 报告。

    像 Scrapinghub 的 AutoExtract 这样的商业工具(我在那里工作)解决了这个问题;他们使用计算机视觉和机器学习,否则很难可靠地解决这个问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-16
      • 2013-10-24
      • 2019-10-01
      • 1970-01-01
      • 2021-06-27
      • 2019-10-03
      • 2019-10-09
      • 2023-01-26
      相关资源
      最近更新 更多