この記事ではClaude Codeに特化して解説します。Claude Code全般は Claude Code|2026年版・インストールからCLAUDE.md・Hooks・本番運用までの実装手引き をご覧ください。

この記事のポイント(30秒でわかるScrapling)

・Scraplingとは? Python製のWebスクレイピングライブラリ。最大の特徴は adaptive——サイトのHTMLが変わっても、保存した特徴から同じ要素を自動で再特定する
・「自然言語で指示する」ツールではない(本記事の旧版の誤り)。adaptive は構造変更への追従機能であって、LLMにプロンプトを渡す仕組みではない
・JavaScriptにも対応している(旧版の誤り)。DynamicFetcher が Playwright Chromium を、StealthyFetcher が Cloudflare Turnstile 突破を担う
・Fetcherは4種 — 静的HTTP/非同期/ステルス/フルブラウザを、同じパーサAPIのまま差し替えられるのが実用上の強み
・AI連携も内蔵——MCPサーバ(scrapling-mcp)とAgent Skillで、AIエージェントからも呼べる(v0.5系で追加・後述)
・実測(2026-11-07) ★約98.8k / fork 10.4k / BSD-3-Clause / 最新 v0.5.1(2026-11-06)。旧版記載の73,873からさらに伸び、本日もトレンド上位

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-11-07 時点)

項目 実測値
スター / fork 約98.8k / 10.4k
主要言語 Python(要件 3.10 以上)
ライセンス BSD-3-Clause
最新リリース v0.5.1(2026-11-06)
リポジトリ D4Vinci/Scrapling

スターは 2026-08 時点の 73,873 から約 98.8k へ伸び、本日(11-07)も GitHub トレンド上位にいる。版も v0.4.14 から v0.5.1 へ上がり、後述の AI 連携(MCP サーバ・Agent Skill) が加わった。

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 へ降りる。

取れる

空 or 骨組みだけ

はい

ボット判定で弾かれる

対象ページを取得したい

Fetcher で
本文が取れるか

Fetcher / AsyncFetcher
最速・ブラウザ不要

JSレンダリングが
必要なだけか

DynamicFetcher
Playwright Chromium

StealthyFetcher
Turnstile 突破 + 指紋偽装

共通パーサAPI
adaptive=True で構造変更に追従

導入方法と最小コード

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'))

AI連携——MCPサーバとAgent Skill(v0.5〜)

v0.5 系で加わった2026年らしい特徴が、AIエージェントに Web データを渡す口を内蔵したことだ。Scrapling は MCP(Model Context Protocol)サーバ(scrapling-mcp)と Agent Skill を同梱し、server.json は PyPI と ghcr.io の両方を配布元として宣言している。

AGENT DATA PATHエージェントに Web データを渡す

MCP サーバ経由で、取得→Markdown化→注入対策

  1. エージェント / LLM から呼ぶ

    scrapling-mcp を MCP サーバとして接続(uvx / Docker)。browser_fetch・browser_extract などのツールを公開

  2. ステルス取得 → 構造化

    ステルス取得でページを取り、CSS/XPath で抽出。page.markdown() で LLM が読みやすい Markdown に変換(LLM をループに入れずに)

  3. プロンプトインジェクション対策

    取得結果から隠し要素・コメント・ゼロ幅文字を除去してからエージェントへ渡す(ドキュメントに明記)

出典: server.json / docs/ai/mcp-server.md(MCP ツールと注入対策・2026-11-07)。実運用の効果は未検証

MCP サーバとして接続すると、ブラウザでの取得・抽出・スクリーンショットなどのツールをエージェントに公開できる。取得したページは page.markdown() で LLM 向けの Markdown に整えられ、「LLM をループに入れずに」コーパス化できるとドキュメントは述べる。注目はプロンプトインジェクション対策で、スクレイピング結果に紛れる隠し要素・コメント・ゼロ幅文字(=人間に見えない指示)を除去してからエージェントへ渡すとしている(効果は未検証だが、設計として踏み込んでいる)。外から来るデータを信用しない、という発想はエージェント運用で無視できない。

競合との違い

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年版・インストールからCLAUDE.md・Hooks・本番運用までの実装手引き

参照ソース