➁PythonAnywhereの無料アカウントでGoogle Newsをスクレイピング


クラウド上のサーバーでPythonのコードを実行できるPythonAnywhereでアカウントを作ったので、
手始めにYahoo! Japanのtopicsをスクレイピングしたかったのですが、403 Forbiddenエラーになります。これは、無料アカウントではPythonAnywhereからアクセスできるサイトが限られているためです。

Google.co.jpはアクセスできたので、Google Newsからヘッドラインをスクレイピングすることにしました。
https://news.google.co.jp

コードはこちらのサイトにのっているYahoo!のトピックスをスクレイピングするものをGoogle News用に変更しました。

【Webスクレイピング入門】ヤフーニュース の見出しとURLを取得する方法
https://rurukblog.com/post/python-webscraping-ynews/

import requests
from bs4 import BeautifulSoup
import re

# Googlニュースのトップページ情報を取得する
URL = "https://news.google.com/topstories?hl=ja&gl=JP&ceid=JP:ja"
rest = requests.get(URL)

# BeautifulSoupにGoogleニュースのページ内容を読み込ませる
soup = BeautifulSoup(rest.text, "html.parser")

# Googleニュースの見出しとURLの情報を取得して出力する
data_list = soup.find_all('h3')
for data in data_list:
    print(data.text)

これをメモ帳か何かで"googleNewsTopics.py"などの名前で保存して、ファイルをアップロードします。この画面でUpload a fileのボタンを押して、ファイルを選択します。

そして、bash consoleから実行するだけです。

Google Newsのheadlineの抜き出すタグh3はFirefoxのWeb開発ツールでh3のタグを探しました。
(ここらへんは他でも紹介されていると思うので、割愛します)


参考にしたページなど:

初心者向け Pythonanywhereを使ってみよう
https://qiita.com/tonytani37/items/60c7185b7cc235f45daf

次はこのスクレイピングした結果を、前回の記事
[Python] 初心者向け 簡単 pythonAnywhereの無料アカウントからメールを送る
https://qiita.com/Kent-747/items/fa92c51d81cd4f50eadc
と組み合わせ、メールにて送ってみようと思います!


PythonAnywhereで無料アカウントからアクセスできるサイトのドメインはこちらのwhite listにのっています。
https://www.pythonanywhere.com/whitelist/

あまりjpのついたサイトはないですね。。

たしか月5ドルほどで、制限なしになるので、もう少し慣れてきたら有料アカウントも検討したいと思います!