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 でもやってるのはスクレイピングなので
サイトを解析してスクレイピングしたほうが効率的なのかもしれない