論文一覧に戻る 📚 用語集トップ 🗺 概念マップ
📚 用語解説
📚 用語解説
Webスクレイピング
Web Scraping
データエンジニアリング
別称: スクレイピング

🔖 キーワード索引

WebスクレイピングWeb Scrapingデータエンジニアリングスクレイピング

本ページは Webスクレイピング(Web Scraping)を多角的に解説します。 上のチップは、 検索・関連語の手がかりです。

💡 30秒で分かる結論

📍 文脈 — どこで使う概念か

Web スクレイピング(Web Scraping)は、 公開 Web サイトの情報を取得する手法。 ニュース記事収集、 価格比較、 不動産情報集約、 SNS 分析など データソースの拡張に多用されます。 ただし著作権、 利用規約、 サーバー負荷、 個人情報保護など 多くの法的・倫理的論点があり、 慎重な運用が必要です。

🎨 直感で掴む — 具体例で理解する

スクレイピングの基本フロー:

  1. HTTP リクエスト:URL にアクセスして HTML を取得
  2. HTML パース:DOM ツリーに展開(BeautifulSoup, lxml)
  3. 要素抽出:CSS セレクタや XPath で必要部分を取り出す
  4. クレンジング:余計な空白・タグを除去
  5. 保存:CSV / DB / JSON へ

例:気象庁の天気情報、 不動産サイトの物件一覧、 Amazon の価格、 食べログの口コミ など、 Web 上の構造化された表は事実上すべてスクレイピング可能です(合法性は別)。

近年は JavaScript で後から表示される SPA(シングルページアプリ)が多く、 単純な HTTP では取得できない場合が増えています。 そのときは SeleniumPlaywright でブラウザを自動操作します。

📐 定義

Webページから情報を抽出する技術

英語名 Web Scraping、 カテゴリ:データエンジニアリング。

🔬 記号・要素の読み解き

HTTP GET
Web サーバーから HTML を取得する基本リクエスト
User-Agent
ブラウザ識別子。 適切に設定しないとブロックされる
robots.txt
サイトが「ここはスクレイピング禁止」を宣言するファイル
CSS セレクタ
要素を指定する記法(.class, #id, div > p
XPath
XML/HTML 専用のパス記法。 より柔軟
レートリミット
1 秒に 1 リクエスト程度に抑える礼儀

🧮 数値例・実値計算

例:47都道府県の人口データを Wikipedia から取得する流れ:

ステップ所要時間注意点
1. requests で HTML 取得0.5 秒User-Agent 設定
2. BeautifulSoup でパース0.1 秒table タグを探す
3. 表データ抽出0.05 秒pandas.read_html が便利
4. クレンジング0.1 秒カンマ、 単位を削除
5. CSV 保存0.01 秒UTF-8 BOM 注意

1 件 1 秒以下で完了。 ただし 1000 件取得なら 1000 秒待つ必要があり、 並列化礼儀ある間隔のバランスが必要。

🐍 Python 実装例

最小コードで動かしてみる例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
import requests
from bs4 import BeautifulSoup
import pandas as pd
import time

url = 'https://example.com/data'
headers = {'User-Agent': 'Mozilla/5.0 (research bot)'}
r = requests.get(url, headers=headers)
time.sleep(1)  # 礼儀(1秒間隔)

soup = BeautifulSoup(r.text, 'html.parser')
table = soup.find('table', class_='data')
df = pd.read_html(str(table))[0]
df.to_csv('data/raw/scraped.csv', index=False, encoding='utf-8')

⚠️ よくある落とし穴

❌ 利用規約違反
サイトの利用規約で禁止されている場合がある。 取得前に必ず Terms of Servicerobots.txt を確認。
❌ 過剰アクセスによる DoS
礼儀のない高頻度アクセスは 偽計業務妨害罪に問われた判例あり(岡崎市立中央図書館事件)。 必ず 1〜数秒の sleep を。
❌ 動的サイトの落とし穴
JavaScript で後から描画されるサイトは requests では取れない。 Selenium / Playwright で対応。
❌ HTML 構造の変化
サイトの DOM 構造はリニューアルで頻繁に変わる。 抽出ロジックが 突然壊れる覚悟を。
❌ 個人情報の取得
個人を識別できるデータをスクレイピングすると、 個人情報保護法・GDPR に抵触。 公開情報でも要注意。