Собрать несколько источников новостей в один список с помощью библиотеки NewsPaper на Python? - PullRequest
0 голосов
/ 23 октября 2019

Уважаемое сообщество Stackoverflow!

Это дополнительный вопрос относительно предыдущего вопроса, который я разместил здесь .

Я хотел бы выделить URL-адреса газетной бумаги с библиотекой NewsPaper из НЕСКОЛЬКИХ источников в один ОДИН список. Это работало хорошо для одного источника, но как только я добавляю ссылку на второй источник, она извлекает только URL-адреса второго.

    import feedparser as fp
    import newspaper
    from newspaper import Article

    website = {"cnn": {"link": "edition.cnn.com", "rss": "rss.cnn.com/rss/cnn_topstories.rss"}, "cnbc":{"link": "cnbc.com", "rss": "cnbc.com/id/10000664/device/rss/rss.html"}} A

    for source, value in website.items():
        if 'rss' in value:
            d = fp.parse(value['rss']) 
            #if there is an RSS value for a company, it will be extracted into d
            article_list = []

            for entry in d.entries:
                if hasattr(entry, 'published'):
                    article = {}
                    article['link'] = entry.link
                    article_list.append(article['link'])
                    print(article['link'])

Вывод выглядит следующим образом, только ссылки из второго источникадобавлены:

    ['https://www.cnbc.com/2019/10/23/why-china-isnt-cutting-lending-rates-like-the-rest-of-the-world.html', 'https://www.cnbc.com/2019/10/22/stocks-making-the-biggest-moves-after-hours-snap-texas-instruments-chipotle-and-more.html' , ...]

Я бы хотел, чтобы все URL из обоих источников были извлечены в список. Кто-нибудь знает решение этой проблемы? Заранее большое спасибо !!

1 Ответ

0 голосов
/ 23 октября 2019

article_list перезаписывается в вашем первом цикле for. Каждый раз, когда вы перебираете новый источник, вы article_list задаете новый пустой список, фактически теряя всю информацию из предыдущего источника. Вот почему в конце у вас есть только информация из одного источника, последнего

. Вы должны инициализировать article_list в начале и не перезаписывать его.

import feedparser as fp
import newspaper
from newspaper import Article

website = {"cnn": {"link": "edition.cnn.com", "rss": "rss.cnn.com/rss/cnn_topstories.rss"}, "cnbc":{"link": "cnbc.com", "rss": "cnbc.com/id/10000664/device/rss/rss.html"}} A

article_list = [] # INIT ONCE
for source, value in website.items():
    if 'rss' in value:
        d = fp.parse(value['rss']) 
        #if there is an RSS value for a company, it will be extracted into d
        # article_list = [] THIS IS WHERE IT WAS BEING OVERWRITTEN

        for entry in d.entries:
            if hasattr(entry, 'published'):
                article = {}
                article['link'] = entry.link
                article_list.append(article['link'])
                print(article['link'])
...