目次
1. 従来のスクレイピング作業と問題点
これまで動的サイトをスクレイピングするには、以下をすべて自分でやる必要がありました。
- Python・Selenium・BeautifulSoup のインストールと設定
- ブラウザの開発者ツールで対象のHTML要素を手動で特定
- CSSセレクタや XPath を調べてコードに書く
- 実行してエラーが出たら自分でデバッグ
- ページネーション・ログイン・待機処理を自分で実装
- 取得したデータのCSV保存コードを書く
特に「対象サイトのHTML構造を読んで適切なセレクタを書く」部分が初心者には高いハードルでした。JavaScriptで動的に表示される要素は、requests だけでは取れないため Selenium を使う必要があり、さらに難易度が上がります。
2. Claude Code で何が変わるか
Claude Code を使うと、以上の作業をすべて「言葉で指示するだけ」で進められます。
| 作業 | 従来 | Claude Code |
|---|---|---|
| 環境構築 | 手動でインストール | 「インストールして」で完了 |
| HTML構造の調査 | 手動でDevToolsを確認 | Claude Codeが自動で調査 |
| セレクタの特定 | 自分でXPath等を書く | Claude Codeが自動で特定 |
| エラー修正 | 自分でデバッグ | 「直して」で自動修正 |
| CSV出力 | 保存コードを書く | 「CSVに保存して」で完了 |
コードを一行も書かなくていいのが最大の違いです。「何を取得したいか」を伝えるだけで、Claude Code がコードを書いて実行し、結果を返してくれます。
おすすめ機材
MacBook Air M4
スクレイピング・AI開発に最適。軽量・高性能・長時間バッテリー
Claude Code との組み合わせで作業効率が大幅アップ
※ Amazonアソシエイトリンクを含みます
3. Claude Code でスクレイピングする実際の流れ
ここでは「某ECサイトの商品名・価格・評価をスクレイピングしてCSVに保存する」という例で、実際の手順を順番に説明します。
STEP 1. 環境準備を任せる
まず Claude Code に必要なライブラリのインストールを頼みます。
あなたの指示
「Pythonで動的サイトをスクレイピングしたい。SeleniumとBeautifulSoupをインストールして、Chromeドライバーの設定まで済ませて」
Claude Code が以下を自動で実行します。
pip install selenium beautifulsoup4 webdriver-manager requests インストールが完了したら、動作確認コードも実行して問題ないか確かめてくれます。ドライバーのパスや設定で詰まることが多い部分ですが、Claude Code が全部やってくれます。
STEP 2. サイトの構造を調べさせる
次に、対象サイトのHTML構造を Claude Code に調べさせます。
あなたの指示
「https://〇〇〇.com/products にアクセスして、商品名・価格・評価が何というHTML要素(クラス名)で表示されているか調べて」
Claude Code が実際にページを開いてHTMLソースを解析し、以下のような形で報告してくれます。
調査結果:
・商品名: <h2 class="product-title">
・価格: <span class="price-value">
・評価: <div class="rating-stars" data-rating="...">
※ このサイトはJavaScriptで動的に表示されるため
Seleniumでの取得が必要です 従来は自分でブラウザの「検証」を開いてHTML構造を読み解く必要がありましたが、この作業を Claude Code が代わりにやってくれます。
STEP 3. スクレイピングコードを書かせて実行する
調査結果をもとに、スクレイピングコードを生成・実行させます。
あなたの指示
「さっき調べた構造をもとに、Seleniumで商品名・価格・評価を全ページ分取得するコードを書いて実行して。ページネーションにも対応して」
Claude Code が生成・実行するコードのイメージ:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.chrome.options import Options
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.service import Service
import time
options = Options()
options.add_argument("--headless") # バックグラウンド実行
options.add_argument("--no-sandbox")
options.add_argument("--disable-dev-shm-usage")
options.add_argument("--user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)")
driver = webdriver.Chrome(
service=Service(ChromeDriverManager().install()),
options=options
)
results = []
page = 1
while True:
url = f"https://〇〇〇.com/products?page={page}"
driver.get(url)
# ページ読み込み完了まで待機(最大10秒)
try:
WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.CLASS_NAME, "product-title"))
)
except:
break # 商品が見つからなければ終了
items = driver.find_elements(By.CLASS_NAME, "product-item")
if not items:
break
for item in items:
try:
name = item.find_element(By.CLASS_NAME, "product-title").text
price = item.find_element(By.CLASS_NAME, "price-value").text
rating = item.find_element(By.CLASS_NAME, "rating-stars").get_attribute("data-rating")
results.append({"商品名": name, "価格": price, "評価": rating})
except Exception as e:
continue
print(f"ページ {page} 完了 / 取得件数: {len(results)}")
page += 1
time.sleep(1.5) # サーバーへの負荷軽減
driver.quit()
print(f"\n取得完了: 合計 {len(results)} 件") 実行すると取得状況をリアルタイムで表示してくれます。ページネーション(次のページへの遷移)も自動で対応します。
STEP 4. エラーが出たら修正させる
スクレイピングは実行してみないとわからないエラーが多いです。従来は自分でエラーの原因を調べる必要がありましたが、Claude Code にそのまま投げれば直してくれます。
あなたの指示(エラー発生時)
「TimeoutException: Message: エラーが出た。直して」
Claude Code が原因を分析して修正案を出します。
エラー分析:
ページ読み込みが10秒以内に完了しなかったようです。
以下の修正を行います:
1. 待機時間を10秒→20秒に変更
2. 要素のクラス名が変わっている可能性があるため再調査
3. ネットワーク速度に応じた動的待機に変更 「直して」の一言で原因の特定から修正・再実行までやってくれます。エラーが出るたびに自分でドキュメントを調べる必要がなくなります。
STEP 5. CSV に出力させる
データが取得できたら、CSV保存を追加させます。
あなたの指示
「取得したデータをproducts.csvとして保存して。Excelで文字化けしないようにして」
Claude Code が以下のコードを追加して実行します。
import csv
# Excelで開いても文字化けしないようにutf-8-sigで保存
with open("products.csv", "w", newline="", encoding="utf-8-sig") as f:
writer = csv.DictWriter(f, fieldnames=["商品名", "価格", "評価"])
writer.writeheader()
writer.writerows(results)
print("保存完了: products.csv")
print(f"件数: {len(results)} 件") utf-8-sig を指定することでExcelで開いても日本語が文字化けしません。「文字化けしないように」と一言添えるだけで Claude Code が自動で選択してくれます。
✅ ここまでの流れまとめ
- 「インストールして」→ 環境構築完了
- 「HTML構造を調べて」→ セレクタを自動特定
- 「コードを書いて実行して」→ スクレイピング実行
- エラーが出たら「直して」→ 自動修正・再実行
- 「CSVに保存して」→ Excel対応CSVが生成される
4. 動的サイト(JavaScript)への対応
スクロールしないと表示されない「無限スクロール」や、ボタンを押すと読み込まれる「もっと見る」ボタンがあるサイトにも対応できます。
あなたの指示
「このサイトは「もっと見る」ボタンを押すと商品が追加表示される。ボタンがなくなるまでクリックし続けて全件取得して」
Claude Code が対応コードを自動生成します。
while True:
try:
# 「もっと見る」ボタンが表示されるまで待機
more_btn = WebDriverWait(driver, 5).until(
EC.element_to_be_clickable((By.CLASS_NAME, "load-more-btn"))
)
more_btn.click()
time.sleep(2) # 読み込み待機
except:
# ボタンがなくなったら全件取得完了
print("全ページ読み込み完了")
break 同様に、ログインが必要なサイトへの対応も「ログインして取得して」と指示するだけです。ID・パスワードの入力フォームへの自動入力から始めてくれます。
5. うまく指示するコツ
対象のURLを必ず伝える
「商品情報を取得して」だけでは不十分です。必ず対象のURLを伝えましょう。
❌ 曖昧な指示
「商品情報をスクレイピングして」
✅ 良い指示
「https://〇〇.com/products から商品名・価格・評価を全件取得してCSVに保存して」
取得したい項目を具体的に伝える
何の情報が欲しいかを明確にすると、Claude Code が適切な要素を特定しやすくなります。
✅ 具体的な指示の例
「商品名・税込価格・レビュー件数・平均評価・商品URL の5項目を取得して」
問題があればそのまま貼り付ける
エラーメッセージ・取得できなかった状況・期待と違う結果は、そのままコピペして Claude Code に渡すのが最速です。
✅ エラー時の指示
「このエラーが出た:
NoSuchElementException: Unable to locate element
直して」
倫理的に注意すること
- サイトの利用規約でスクレイピングが禁止されていないか確認する
time.sleep()でアクセス間隔を1〜2秒空けてサーバーに負荷をかけない- 取得したデータは個人利用・学習目的の範囲で使用する