Pythonでpygooglenewsを使用し、Googleニュースの記事を取得する

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ニュースのトップニュースの記事を取得し、記事のタイトルとリンクを出力することができました。

コメント

タイトルとURLをコピーしました