Webスクレイピングとは?どんなことができるか
Webスクレイピングとは、Webページから自動的にデータを収集する技術です。Pythonのライブラリを使えば、手作業で1時間かかるデータ収集を数秒で完了できます。
活用例: - ニュースサイトの記事タイトルを収集する - 商品価格を比較サイトから定期収集する - 就職・転職求人情報を一括取得する
使用するライブラリ
| ライブラリ | 用途 |
|---|---|
| requests | WebページのHTMLを取得する |
| BeautifulSoup4 | HTMLを解析してデータを抽出する |
| Selenium | JavaScriptで動くページの操作 |
| Playwright | より新しいブラウザ自動化ツール |
静的なHTMLページにはrequests + BeautifulSoup、JavaScriptが必要なページにはSelenium/Playwrightを使います。
インストール
pip install requests beautifulsoup4
基本的なスクレイピング
import requests
from bs4 import BeautifulSoup
# HTMLを取得
url = "https://example.com"
response = requests.get(url)
response.encoding = 'utf-8'
# BeautifulSoupで解析
soup = BeautifulSoup(response.text, "html.parser")
# タイトルを取得
title = soup.find("title").text
print(f"タイトル: {title}")
# 全てのリンクを取得
links = soup.find_all("a")
for link in links:
print(link.get("href"), link.text)
CSSセレクターを使った抽出
# class="article-title" の全要素を取得
titles = soup.select(".article-title")
for t in titles:
print(t.text.strip())
# id="main-content" 内のh2要素
headings = soup.select("#main-content h2")
for h in headings:
print(h.text)
User-Agentの設定
一部のサイトはBotからのアクセスをブロックします。User-Agentを設定することでブラウザに見せかけられます。
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
}
response = requests.get(url, headers=headers)
注意事項(必読)
スクレイピングを行う際は必ず以下を守りましょう。
- 利用規約を確認する:多くのサイトではスクレイピングを禁止しています
- robots.txtを確認する:
サイトURL/robots.txtでクロール禁止ページを確認 - サーバーに負荷をかけない:連続リクエスト時は
time.sleep(1〜3)で間隔を設ける - 取得したデータの二次利用に注意:著作権・個人情報に配慮する
まとめ
BeautifulSoupを使ったスクレイピングは、数十行のコードで強力なデータ収集ツールを作れます。利用規約とrobots.txtを必ず確認した上で、節度のある使い方を心がけましょう。




