環境構築からWEBアプリ開発・スマホアプリ開発まで。ときには動画制作やゲームも。

supilog
すぴろぐ

【PythonでWEBスクレイピング】基本の使い方

【PythonでWEBスクレイピング】基本の使い方

スクレイピングとは、プログラムがWEBページにアクセスして、必要な情報を抽出する作業のことです。手動で情報を集めるのことも可能ではありますが、スクレイピングは比較にならないほどの速さで抽出を行うことが出来ます。また、一度プログラムを組めば、その後は同じプログラムを定期的に動作させることにより、未来の工数を大幅に削減することも出来る。持っておいて損のないスキルです。

スクレイピングを行う際の注意点

正しい利用を行うことが大事です。利用規約にて、スクレイピングを禁止している場合もありますし、取得した情報の利用方法についても定められている場合があります。WEBサイトの利用規約を十分に読み込んで、違反のない範囲で行いましょう。

また、スクレイピングが許可されているWEBサイトであっても、アクセスをかけ過ぎてWEBサイトの負荷とならないように、適切なアクセス頻度を保つことが重要です。

インストール

わたしのいまの環境

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
$ python3 -V
Python 3.13.2
$ pip -V
pip 25.0 from /opt/homebrew/lib/python3.13/site-packages/pip (python 3.13)
$ python3 -V Python 3.13.2 $ pip -V pip 25.0 from /opt/homebrew/lib/python3.13/site-packages/pip (python 3.13)
$ python3 -V
Python 3.13.2

$ pip -V
pip 25.0 from /opt/homebrew/lib/python3.13/site-packages/pip (python 3.13)

ライブラリのインストール

「Requests」「Beautiful Soup」をインストールします。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
$ pip install requests beautifulsoup4
$ pip install requests beautifulsoup4
$ pip install requests beautifulsoup4

余談

何気なく「わたしのいまの環境」と記載しましたが、わたしの環境(mac)では、pythonが複数インストールされていて、pythonとpipで異なるバージョンのものにパスが通ってしまっていて困りました。(requestsをインストールしたのに、呼び出せないなんて事が起こって、ひぃひぃ言っていました。

結論としては、venvを利用して、仮想的な環境を用意することで事なきを得ています。

参考

https://qiita.com/7110/items/1aa5968022373e99ae28

https://qiita.com/shun_sakamoto/items/7944d0ac4d30edf91fde

https://note.com/inagy/n/n7e370c757991

Pythonによる基本的なスクレイピング

WEBページにアクセスして情報を取得する

こんな感じでステータスコードを取得できたり、HTMLテキストを取得できたりする。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
import requests
url = "https://supilog.supisupi.com"
response = requests.get(url)
print(response.status_code)
print(response.text)
import requests url = "https://supilog.supisupi.com" response = requests.get(url) print(response.status_code) print(response.text)
import requests

url = "https://supilog.supisupi.com"
response = requests.get(url)

print(response.status_code)
print(response.text)

BeautifulSoupを使って情報を解析する

解析と言っても大げさな事ではなく、自分の欲しい情報にアクセスするということ。こんな感じで欲しい値を直接取得する。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
from bs4 import BeautifulSoup
import requests
url = "https://supilog.supisupi.com"
response = requests.get(url)
soup = BeautifulSoup(response.text, "html.parser")
title = soup.find("h1").text
print(title)
description = soup.find_all("div", class_="header-description")
print(description[0].text)
# 出力例
supilog
すぴろぐ
環境構築からWEBアプリ開発・スマホアプリ開発まで。ときには動画制作やゲームも。
from bs4 import BeautifulSoup import requests url = "https://supilog.supisupi.com" response = requests.get(url) soup = BeautifulSoup(response.text, "html.parser") title = soup.find("h1").text print(title) description = soup.find_all("div", class_="header-description") print(description[0].text) # 出力例 supilog すぴろぐ 環境構築からWEBアプリ開発・スマホアプリ開発まで。ときには動画制作やゲームも。
from bs4 import BeautifulSoup
import requests

url = "https://supilog.supisupi.com"
response = requests.get(url)

soup = BeautifulSoup(response.text, "html.parser")
title = soup.find("h1").text
print(title)

description = soup.find_all("div", class_="header-description")
print(description[0].text)


# 出力例
supilog
すぴろぐ

環境構築からWEBアプリ開発・スマホアプリ開発まで。ときには動画制作やゲームも。

とまぁ以上が、基本的な使い方。

まとめ

Pythonによる簡単なスクレイピングを紹介しました。情報収集を効率化したり、データ分析をしたりするために使用することができるので、様々な場面で役立つ可能性がありますね。ぜひ使ってみてください。

個人的なところで言うと、プロ野球を熱心に見ていた時期に、「このキャッチャーは、ランナーが出た時に、四球を出しすぎじゃないか」という疑念が発端で、某プロ野球速報のWEBサイトから、1球ごとのデータを全てスクレイピングして、納得するまで分析していました(笑)。

結果、わりと良いキャッチャーだったんじゃないかということが分かって、己の愚かさを知ることになったわけですが。。懐かしい思い出です。それでは。