この記事ではClaude Codeに特化して解説します。Claude Code全般は Claude Code完全ガイド2026:インストールから本番運用まで をご覧ください。
この記事のポイント(30秒でわかるScrapling)
・Scraplingとは? Python製のWebスクレイピングライブラリ。最大の特徴は adaptive——サイトのHTMLが変わっても、保存した特徴から同じ要素を自動で再特定する
・「自然言語で指示する」ツールではない(本記事の旧版の誤り)。adaptive は構造変更への追従機能であって、LLMにプロンプトを渡す仕組みではない
・JavaScriptにも対応している(旧版の誤り)。DynamicFetcher が Playwright Chromium を、StealthyFetcher が Cloudflare Turnstile 突破を担う
・Fetcherは4種 — 静的HTTP/非同期/ステルス/フルブラウザを、同じパーサAPIのまま差し替えられるのが実用上の強み
・実測(2026-08-14) ★73,873 / fork 7,390 / BSD-3-Clause / 最新 v0.4.14(2026-08-10)。旧版記載の「33,882スター」から倍以上に伸びている
Scraplingとは——壊れないセレクタという発想
Scraplingは、Python向けのWebスクレイピングフレームワーク。HTTPリクエストからフルブラウザ自動化まで1つのライブラリで賄い、取得したページを共通のパーサAPIで扱う。
このライブラリの中心にあるのは adaptive という考え方である。通常のスクレイピングでは div.price > span のようなセレクタを書くが、サイトが改修されてクラス名やDOM階層が変わると一斉に壊れる。Scraplingは要素の特徴を記憶しておき、構造が変わったページでも同じ意味の要素を探し直す。保守コストの削減がこのライブラリの主たる価値である。
本記事の訂正(2026-08-14)
旧版では「自然言語でWebスクレイピング」「AIが意図を読み取る」「標準では静的HTML解析のみ対応」と記載していたが、いずれも公式READMEの記述と一致しないため訂正した。adaptive は自然言語処理ではなく構造変更への追従機能であり、動的ページについては DynamicFetcher が Playwright によるブラウザ自動化に対応している。スター数も 33,882 から 73,873 へ更新した。
実測データ(2026-08-14 時点)
| 項目 | 実測値 |
|---|---|
| スター / fork | 73,873 / 7,390 |
| 主要言語 | Python |
| ライセンス | BSD-3-Clause |
| 最新リリース | v0.4.14(2026-08-10) |
| 直近push | 2026-08-11 |
| リポジトリ | D4Vinci/Scrapling |
4種のFetcherをどう選び分けるか
Scraplingの実務上の要点は「取得方法だけを差し替えられる」ことにある。パース側のコードは変えずに、対象サイトの防御レベルに応じてFetcherを選ぶ。
| Fetcher | 取得方式 | JavaScript | アンチボット突破 | 速度 | 主な用途 |
|---|---|---|---|---|---|
Fetcher |
HTTP(TLSフィンガープリント偽装可) | ✗ | 弱 | 最速 | 静的HTML・API的なページ |
AsyncFetcher |
非同期HTTP | ✗ | 弱 | 最速 | 大量URLの並列取得 |
DynamicFetcher |
Playwright(Chromium / Chrome) | ✓ | 中 | 遅 | JSで描画されるSPA |
StealthyFetcher |
ステルスブラウザ | ✓ | 強(Cloudflare Turnstile対応) | 最も遅い | 保護の強いサイト |
選定は上から順に試すのが定石である。Fetcher で本文が取れるならそれが最速で、ブラウザを起動する必要はない。取れない場合にのみ DynamicFetcher、それでもブロックされる場合に StealthyFetcher へ降りる。
本文が取れるか"} B -->|"取れる"| C["Fetcher / AsyncFetcher
最速・ブラウザ不要"] B -->|"空 or 骨組みだけ"| D{"JSレンダリングが
必要なだけか"} D -->|"はい"| E["DynamicFetcher
Playwright Chromium"] D -->|"ボット判定で弾かれる"| F["StealthyFetcher
Turnstile 突破 + 指紋偽装"] C --> G["共通パーサAPI
adaptive=True で構造変更に追従"] E --> G F --> G
導入方法と最小コード
pipからの直接インストール:
pip install scrapling
# ブラウザ系Fetcher(DynamicFetcher / StealthyFetcher)を使う場合は追加取得が必要
scrapling install
静的ページなら Fetcher だけで完結する。impersonate で実ブラウザのTLSフィンガープリントを装える。
from scrapling.fetchers import Fetcher, FetcherSession
with FetcherSession(impersonate='chrome') as session:
page = session.get('https://quotes.toscrape.com/', stealthy_headers=True)
quotes = page.css('.quote .text::text')
print(quotes)
保護の強いサイトや動的ページでは Fetcher を差し替える。パース側(page.css(...))は変えなくてよい点がこの設計の利点である。
from scrapling.fetchers import StealthyFetcher
# adaptive を有効化すると、HTML構造が変わっても要素を再特定する
StealthyFetcher.adaptive = True
page = StealthyFetcher.fetch(
'https://example.com',
headless=True,
network_idle=True,
solve_cloudflare=True, # Turnstile / Interstitial を突破
)
print(page.css('h1::text'))
競合との違い
Selenium / Playwright vs Scrapling:Selenium・Playwrightはブラウザの完全な自動操作に特化した「ドライバ」である。Scraplingはそれらを内部で使いつつ(DynamicFetcher は Playwright ベース)、取得とパースを1つのAPIに束ねる上位レイヤーにあたる。競合というより、Scraplingがブラウザ自動化を包含する関係にある。
Beautiful Soup vs Scrapling:Beautiful Soupはパース専用で、取得は requests 等に任せる。セレクタの手動指定が前提であり、サイト改修で壊れたら人手で直す。Scraplingは取得を内包し、かつ adaptive によりセレクタの再特定を自動化する点が異なる。
cloudscraper vs Scrapling:Cloudflare対策に絞ったモジュールがcloudscraper:CloudflareをバイパスするPythonモジュールである。Scraplingは StealthyFetcher として同種の機能を内蔵しているため、Scraplingを使うなら併用は基本的に不要になる。
こんな人におすすめ
・定期的にHTML構造が変わるサイトからのデータ抽出を続けたい開発者(adaptive の恩恵が最も大きい)
・静的ページと動的ページが混在し、取得方式を都度使い分けているPythonエンジニア
・Cloudflare配下のサイトに対し、複数ライブラリを組み合わせている運用を1本化したいチーム
・並行クロールにpause/resumeやプロキシローテーションを求めるデータ収集基盤の担当者
実装上の考慮点
Scraplingの導入時は、スクレイピング対象サイトの利用規約確認が必須。robots.txtの尊重やレート制限の実装で、対象サイトへの負荷軽減を意識すべきである。アンチボット突破機能を持つライブラリほど、法務・倫理面の確認を省略できない点は強調しておきたい。技術的に取得できることと、取得してよいことは別である。
パフォーマンスは非同期処理の活用で大幅に改善される。AsyncFetcher と async セッションを使った並列リクエスト処理は、大量URLのスクレイピング時に顕著な効果が出る。一方、StealthyFetcher はブラウザを起動するため最も遅い。全URLを一律ステルスで取りにいくのではなく、必要なドメインだけ降ろす設計が現実的である。
関連記事: Claude Code完全ガイド2026:インストールから本番運用まで
参照ソース
- D4Vinci/Scrapling GitHub リポジトリ(スター・ライセンス・リリースは2026-08-14にGitHub APIで取得。README の Fetcher 仕様も同日確認)
- Scrapling 公式ドキュメント — Choosing a Fetcher
- Playwright Python 公式ドキュメント