【问题标题】:Addressing Reliable Output in Newspaper3k处理 Newspaper3k 中的可靠输出
【发布时间】:2019-02-22 19:21:44
【问题描述】:

当前行为:

在尝试使用 News-aggregator package Newspaper3k 时,我无法产生一致/可靠的输出。

系统/环境设置:

Windows 10
Miniconda3 4.5.12
Python 3.7.1
Newspaper3k 0.2.8

重现的步骤(代码):

import newspaper

cnn_paper = newspaper.build('http://cnn.com')
print(cnn_paper.size())

预期行为/输出(根据 cnn 上发布的当前链接而有所不同):

在连续打印输出运行时在 cnn 上产生一致数量的发布链接。

实际行为/输出

第一次运行代码产生的链接数量与之后立即运行的代码不同。

1st Run Print output: 94 (as of time of posting this question)
2nd Run Print output: 0 
3rd Run Print output: 18
4th Run Print output: 7

实际链接的打印方式与上述链接计数打印方式相同。我尝试过使用许多不同的新闻来源,并且得到了相同的意外差异结果。我需要更改我的 User-Agent 标头吗?这是检测问题吗?如何产生可靠的结果?

任何帮助将不胜感激。

谢谢。

【问题讨论】:

    标签: python-3.x anaconda feed miniconda


    【解决方案1】:

    通过更好地理解标题 6.1.3 Article caching in the user documentation 下的默认缓存,我的问题得到了解决。

    除了我一般的无知之外,我的困惑来自read the docs 'Documentation' listed the caching function as a TODO as can be seen here

    经过仔细研究,我发现:

    默认情况下,报纸会缓存所有以前提取的文章 并删除已提取的任何文章。此功能 存在以防止重复文章并提高提取速度。

    cbs_paper.size() 的返回值从 1030 变为 2 因为 当我们第一次抓取 cbs 时,我们发现了 1030 篇文章。然而,在我们的 第二次爬取,我们剔除所有已经被 爬行。这意味着自我们的第一篇文章以来已经发表了 2 篇新文章 提取。

    您可以选择退出此功能 memoize_article 参数。 您也可以通过较低的 高级部分中介绍的级别“配置”对象。

    >>>import newspaper
    >>>cbs_paper = newspaper.build('http://cbs.com', memoize_articles=False)
    >>>cbs_paper.size()1030
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-04
      • 1970-01-01
      • 2013-04-01
      • 2016-02-06
      • 1970-01-01
      • 2021-02-09
      • 2017-01-22
      相关资源
      最近更新 更多