newspaper3k で経済指標のニュースを取得(失敗)

newspaper3k で経済指標のニュースを取得(失敗)

ロイターの経済指標ニュースを取得する
https://jp.reuters.com/investing/news/economic

jupyter notebook

newspaper3 を
インストールするには

1
!pip install newspaper3k

でOK

次に
分かち書き用のライブラリ
tinysegmenter
をpipでインストール

jupyter notebook でインストールするには

1
!pip install tinysegmenter

まず
newspaper から article をインポート

1
import newspaper

次に
自然言語処理を利用し
記事のキーワードだけを抽出したり
サマリーを取得するため
自然言語処理ライブラリであるntlkをダウンロード

1
import nltk

でインポートして

1
nltk.download("punkt")

実行結果で True になればOK

次にURL設定

ニュース取得のとき
build を使うことで複数ページの取得が可能
article だと単一記事になる

1
website = newspaper.build(url)

あとは article で一つ一つ取り出して自然言語処理していく

これは for で行う

サマリー表示のときに
記事と記事の時に改行をいれる

これは

1
end="\n\n"

をつければOK

これだとすごい大量の記事になるので
表示数を制限する

今回は9の記事表示にした

あと見やすくするために記事に連番をつける

1
2
3
4
5
6
7
8
9
10
11
12
i = 0
for article  in website.articles:
    article.download()
    article.parse()
    article.nlp()
    print("記事",str(i),":",article.title)
    print(article.url)
    print(article.summary, end="\n\n")
     
    if i > 9:
        break
    i = i+1

これで取得はできたけど
経済指標と関係ないニュースがほとんどになってしまう

https://jp.reuters.com/news/business
にしたけど
あまり変わらない

URLの指定が悪いのか
もしくはスクレイピングしたほうが早いかは微妙なところ

記事タイトルをみると
どっちを指定しても
トップニュースを取得してしまっている
https://jp.reuters.com/news/archive/economicNews?view=page&page=2&pageSize=10
としてみたけど結果が変わらないため
URLの指定の問題ではなく
取得する場所の問題になりそう

記事を取得しない原因については

1
, memoize_articles=False

をつけることで解決

【Python】newspaper3kで記事が取得できない時の対処法

を参考に

デフォルトは True になっているため
ローカルに記事を保存してしまう

newspaper3k でもやってるのはスクレイピングなので
サイトを解析してスクレイピングしたほうが効率的なのかもしれない