Газетная библиотека

Как абсолютный новичок в теме использования 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 ответа

Решение

Следующие коды сохранят загруженные статьи в формате 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, Вместо этого вы должны импортировать и использовать источник.

Приведенные выше коды можно использовать в качестве примера для сохранения статей и в других форматах, например, txt, а также только те части, которые вам нужны из статей, например авторы, тело, publish_date.

Вы можете использовать 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)  
Другие вопросы по тегам