3

親愛なる Stackoverflow コミュニティ!

CNN RSS フィードからニュース記事をスクレイピングし、スクレイピングされた各記事のリンクを取得したいと考えています。これは Python NewsPaper ライブラリで非常にうまく機能しますが、残念ながらリストや辞書などの使用可能な形式で出力を取得できません。

スクレイピングされたリンクを、多数の個別のリストではなく、1 つの SINGLE リストに追加したいと考えています。

    import feedparser as fp
    import newspaper
    from newspaper import Article

    website = {"cnn": {"link": "http://edition.cnn.com/", "rss": "http://rss.cnn.com/rss/cnn_topstories.rss"}}

    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

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

出力は次のとおりです。

http://rss.cnn.com/~r/rss/cnn_topstories/~3/5aHaFHz2VtI/index.html
http://rss.cnn.com/~r/rss/cnn_topstories/~3/_O8rud1qEXA/joe-walsh-trump-gop-voters-sot-crn-vpx.cnn
http://rss.cnn.com/~r/rss/cnn_topstories/~3/xj-0PnZ_LwU/index.html
.......

すべてのリンクを含む 1 つのリストが必要です。

    list =[http://rss.cnn.com/~r/rss/cnn_topstories/~3/5aHaFHz2VtI/index.html , http://rss.cnn.com/~r/rss/cnn_topstories/~3/_O8rud1qEXA/joe-walsh-trump-gop-voters-sot-crn-vpx.cnn , http://rss.cnn.com/~r/rss/cnn_topstories/~3/xj-0PnZ_LwU/index.html ,... ]

次のように for ループを介してコンテンツを追加しようとしました。

    for i in article['link']:
        article_list = []
        article_list.append(i)
        print(article_list)

しかし、出力は次のようになります。

['h']
['t']
['t']
['p']
[':']
['/']
['/']
['r']
['s']
...

コンテンツを1つのリストに入れる方法を知っている人はいますか? または、次のような辞書:

    dict = {'links':[link1 , link2 , link 3]}

ご協力ありがとうございました!!

4

1 に答える 1