报纸图书馆

时间:2018-11-13 21:02:20

标签: python python-newspaper

作为使用python的新手,我偶然发现了使用报纸库扩展的一些困难。我的目标是定期使用报纸扩展名下载德国新闻网站“ tagesschau”的所有新文章以及CNN的所有文章,以构建一个我可以在几年内进行分析的数据栈。 如果我做对了,我可以使用以下命令下载所有文章并将其抓取到python库中。

import newspaper
from newspaper import news_pool

tagesschau_paper = newspaper.build('http://tagesschau.de')
cnn_paper = newspaper.build('http://cnn.com')

papers = [tagesschau_paper, cnn_paper]
news_pool.set(papers, threads_per_source=2) # (3*2) = 6 threads total
news_pool.join()`

如果这是下载所有文章的正确方法,那么如何提取和保存python之外的文章呢?还是将这些文章保存在python中,以便在再次重新启动python时可以重用它们?

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

以下代码将以HTML格式保存下载的文章。在文件夹中,您将找到。 tagesschau_paper0.html, tagesschau_paper1.html, tagesschau_paper2.html, .....

import newspaper
from newspaper import news_pool

tagesschau_paper = newspaper.build('http://tagesschau.de')
cnn_paper = newspaper.build('http://cnn.com')

papers = [tagesschau_paper, cnn_paper]
news_pool.set(papers, threads_per_source=2)
news_pool.join()

for i in range (tagesschau_paper.size()): 
    with open("tagesschau_paper{}.html".format(i), "w") as file:
    file.write(tagesschau_paper.articles[i].html)

注意:news_pool并没有从CNN获得任何信息,因此我跳过了为它编写代码的过程。如果选中cnn_paper.size(),则结果为0。您必须导入并使用Source

上面的代码也可以作为示例以其他格式保存文章,例如txt,也只有文章中您需要的部分,例如作者,正文,发布日期。

答案 1 :(得分:-1)

您可以使用pickle将对象保存在python之外,以后再重新打开它们:

file_Name = "testfile"
# open the file for writing
fileObject = open(file_Name,'wb') 

# this writes the object news_pool to the
# file named 'testfile'
pickle.dump(news_pool,fileObject)   

# here we close the fileObject
fileObject.close()
# we open the file for reading
fileObject = open(file_Name,'r')  
# load the object from the file into var news_pool_reopen
news_pool_reopen = pickle.load(fileObject)