Pythonでpygooglenewsを使用し、Googleニュースの記事を取得してみます。
pygooglenews(https://github.com/kotartemiy/pygooglenews)は、GoogleニュースのRSSフィードのPythonラッパーです。pygooglenewsの製作者いわく、何ヶ月にもわたるテストで、1日に10万回以上RSSフィードにアクセスしても、GoogleはIPアドレスをブロックしないのこと。
なお、本番環境では、NewsCatcherのGoogleNews APIを使用や、プロキシを利用できるScrapingBee APIの利用、ご自身でプロキシをご用意することを推奨しています。
■Python
今回のPythonのバージョンは、「3.8.5」を使用しています。(Windows10)(pythonランチャーでの確認)
■pygooglenewsをインストールする
pygooglenewsをインストールを行いますが、今回はpipを経由してインストールを行うので、まずWindowsのコマンドプロンプトを起動します。
pip install pygooglenews --upgrade
起動後、上記のコマンドを入力し、Enterキーを押します。
なお、今回は、pythonランチャーを使用しており、Python Version 3.8.5にインストールを行うために、pipを使う場合にはコマンドでの切り替えを行います。
py -3.8 -m pip install pygooglenews --upgrade
切り替えるために、上記のコマンドを入力し、Enterキーを押します。
Defaulting to user installation because normal site-packages is not writeable Collecting pygooglenews Downloading pygooglenews-0.1.2-py3-none-any.whl (10 kB) Requirement already satisfied, skipping upgrade: requests<3.0.0,>=2.24.0 in c:\users\user_\appdata\roaming\python\python38\site-packages (from pygooglenews) (2.25.1) Collecting beautifulsoup4<5.0.0,>=4.9.1 Downloading beautifulsoup4-4.9.3-py3-none-any.whl (115 kB) |████████████████████████████████| 115 kB 1.1 MB/s Collecting dateparser<0.8.0,>=0.7.6 Downloading dateparser-0.7.6-py2.py3-none-any.whl (362 kB) |████████████████████████████████| 362 kB 2.2 MB/s Collecting feedparser<6.0.0,>=5.2.1 Downloading feedparser-5.2.1.tar.bz2 (192 kB) |████████████████████████████████| 192 kB 2.2 MB/s Requirement already satisfied, skipping upgrade: certifi>=2017.4.17 in c:\users\user_\appdata\roaming\python\python38\site-packages (from requests<3.0.0,>=2.24.0->pygooglenews) (2021.5.30) Requirement already satisfied, skipping upgrade: urllib3<1.27,>=1.21.1 in c:\users\user_\appdata\roaming\python\python38\site-packages (from requests<3.0.0,>=2.24.0->pygooglenews) (1.26.5) Requirement already satisfied, skipping upgrade: chardet<5,>=3.0.2 in c:\users\user_\appdata\roaming\python\python38\site-packages (from requests<3.0.0,>=2.24.0->pygooglenews) (4.0.0) Requirement already satisfied, skipping upgrade: idna<3,>=2.5 in c:\users\user_\appdata\roaming\python\python38\site-packages (from requests<3.0.0,>=2.24.0->pygooglenews) (2.10) Collecting soupsieve>1.2; python_version >= "3.0" Downloading soupsieve-2.2.1-py3-none-any.whl (33 kB) Requirement already satisfied, skipping upgrade: python-dateutil in c:\users\user_\appdata\roaming\python\python38\site-packages (from dateparser<0.8.0,>=0.7.6->pygooglenews) (2.8.1) Collecting regex!=2019.02.19 Downloading regex-2021.4.4-cp38-cp38-win_amd64.whl (270 kB) |████████████████████████████████| 270 kB 3.3 MB/s Requirement already satisfied, skipping upgrade: pytz in c:\users\user_\appdata\roaming\python\python38\site-packages (from dateparser<0.8.0,>=0.7.6->pygooglenews) (2021.1) Requirement already satisfied, skipping upgrade: tzlocal in c:\users\user_\appdata\roaming\python\python38\site-packages (from dateparser<0.8.0,>=0.7.6->pygooglenews) (2.1) Requirement already satisfied, skipping upgrade: six>=1.5 in c:\users\user_\appdata\roaming\python\python38\site-packages (from python-dateutil->dateparser<0.8.0,>=0.7.6->pygooglenews) (1.16.0) Using legacy setup.py install for feedparser, since package 'wheel' is not installed. Installing collected packages: soupsieve, beautifulsoup4, regex, dateparser, feedparser, pygooglenews Running setup.py install for feedparser ... done Successfully installed beautifulsoup4-4.9.3 dateparser-0.7.6 feedparser-5.2.1 pygooglenews-0.1.2 regex-2021.4.4 soupsieve-2.2.1
Enterキーを押すと、インストールが開始され、上記のように「Successfully installed」と表示されます。これが表示されれば、pygooglenewsが正常にインストールされたことになります。
なお、今回はpygooglenewsのバージョン0.1.2をインストールしました。
■pygooglenewsライブラリを使用し、Googleニュースのトップニュースの記事を取得する
インストール後、pygooglenewsライブラリを使用し、Googleニュースのトップニュースの記事を取得してみます。
取得のため、スクリプトを書いていきます。
■コード
from pygooglenews import GoogleNews gn = GoogleNews(lang="ja",country="JP") top_news = gn.top_news() for item in top_news['entries']: print(item['title']) print(item['link'])
Googleニュースのトップニュースの記事を取得する場合は、GoogleNews()の括弧内に、取得するニュース記事の言語を指定します。今回は日本語を取得しますので、「lang=”ja”,country=”JP”」と指定します。
取得したトップのGoogleニュースのRSSフィードをtop_news変数に格納します。
格納後、for文を使用し、RSSフィード内からタイトル、URLを抜き出して、print()関数で取得します。
■実行
このスクリプトを「googlenews_top.py」という名前で保存し、コマンドプロンプトから実行してみます。
実行してみると、pygooglenewsライブラリを使用し、Googleニュースのトップニュースの記事を取得し、記事のタイトルとリンクを出力することができました。
コメント