本文へスキップ
BecomeCoder

Pythonスクレイピングコース · 第5章 実務のスクレイピング · レッスン15

requests でHTMLを取得する

ローカル実施

導入

第2章で html = """...""" と書いていた部分を、実際のスクレイピングでは requests ライブラリでネットから取得します。ここが「①取得」の担当です。

説明

import requests
from bs4 import BeautifulSoup

url = "https://example.com/"
res = requests.get(url)          # URLにアクセスしてレスポンスを得る
res.raise_for_status()           # エラー(404など)ならここで例外にする

res.encoding = res.apparent_encoding   # 文字化け対策(日本語サイトで有効)
soup = BeautifulSoup(res.text, "html.parser")

print(soup.find("title").text)
  • requests.get(url)URLにアクセスし、レスポンスを受け取ります。
  • res.status_code … 結果のコード。200 が成功、404 が「ページが無い」、403 が「拒否」など。
  • res.raise_for_status() … 失敗コードなら例外を出して、気づかず先へ進むのを防ぎます。
  • res.text … 返ってきた HTML の本文。これを そのまま BeautifulSoup に渡せば、あとは第2〜4章と同じ解析です。

つまり実務では、**「requests.get で取ってきた res.text を、これまで練習した BeautifulSoup に流し込む」**だけ。解析の技術がそのまま活きます。

やってみよう

第2〜4章で書いた解析コードの html = """...""" を、res = requests.get(url); html = res.text に置き換えれば、そのまま実サイト向けになります。取得(requests)と解析(BeautifulSoup)が分かれていることを意識しましょう。