newspaper3k で経済指標のニュースを取得(失敗)
ロイターの経済指標ニュースを取得する
https://jp.reuters.com/investing/news/economic
jupyter notebook
で
newspaper3 を
インストールするには
!pip install newspaper3k
でOK
次に
分かち書き用のライブラリ
tinysegmenter
をpipでインストール
jupyter notebook でインストールするには
!pip install tinysegmenter
まず
newspaper から article をインポート
import newspaper
次に
自然言語処理を利用し
記事のキーワードだけを抽出したり
サマリーを取得するため
自然言語処理ライブラリであるntlkをダウンロード
import nltk
でインポートして
nltk.download("punkt")
実行結果で True になればOK
次にURL設定
url = "https://jp.reuters.com/investing/news/economic"
ニュース取得のとき
build を使うことで複数ページの取得が可能
article だと単一記事になる
website = newspaper.build(url)
あとは article で一つ一つ取り出して自然言語処理していく
これは for で行う
サマリー表示のときに
記事と記事の時に改行をいれる
これは
end="\n\n"
をつければOK
これだとすごい大量の記事になるので
表示数を制限する
今回は9の記事表示にした
あと見やすくするために記事に連番をつける
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の指定の問題ではなく
取得する場所の問題になりそう
記事を取得しない原因については
, memoize_articles=False
をつけることで解決
【Python】newspaper3kで記事が取得できない時の対処法
を参考に
デフォルトは True になっているため
ローカルに記事を保存してしまう
newspaper3k でもやってるのはスクレイピングなので
サイトを解析してスクレイピングしたほうが効率的なのかもしれない