当前行为:
在尝试使用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头吗?这是一个检测问题吗?如何产生可靠的结果?
任何帮助都将不胜感激。
谢谢。
发布于 2019-02-28 04:20:41
通过更好地理解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篇文章。然而,在我们的第二次抓取时,我们删除了所有已经抓取的文章。这意味着自从我们第一次摘录以来,已经发表了两篇新的文章。
对于memoize_articlesparameter,您可以选择不使用此功能。您还可以传入较低级别的“Config”对象,如高级部分所述。
>>>import newspaper
>>>cbs_paper = newspaper.build('http://cbs.com', memoize_articles=False)
>>>cbs_paper.size()1030https://stackoverflow.com/questions/54833797
复制相似问题