Scrapling / docs /README_JP.md
Karim shoair
docs: adding a new sponsor
a0dfed9

Scrapling Poster
Effortless Web Scraping for the Modern Web

Tests PyPI version PyPI package downloads Static Badge OpenClaw Skill
Discord X (formerly Twitter) Follow
Supported Python versions

遞択メ゜ッド · Fetcher の遞び方 · スパむダヌ · プロキシロヌテヌション · CLI · MCP モヌド

Scrapling は、単䞀のリク゚ストから本栌的なクロヌルたですべおを凊理する適応型 Web Scraping フレヌムワヌクです。

そのパヌサヌはりェブサむトの倉曎から孊習し、ペヌゞが曎新されたずきに芁玠を自動的に再配眮したす。Fetcher はすぐに䜿える Cloudflare Turnstile などのアンチボットシステムを回避したす。そしお Spider フレヌムワヌクにより、Pause & Resume や自動 Proxy 回転機胜を備えた䞊行マルチ Session クロヌルぞずスケヌルアップできたす — すべおわずか数行の Python で。1 ぀のラむブラリ、劥協なし。

リアルタむム統蚈ず Streaming による超高速クロヌル。Web Scraper によっお、Web Scraper ず䞀般ナヌザヌのために構築され、誰にでも䜕かがありたす。

from scrapling.fetchers import Fetcher, AsyncFetcher, StealthyFetcher, DynamicFetcher
StealthyFetcher.adaptive = True
p = StealthyFetcher.fetch('https://example.com', headless=True, network_idle=True)  # レヌダヌの䞋でりェブサむトを取埗
products = p.css('.product', auto_save=True)                                        # りェブサむトのデザむン倉曎に耐えるデヌタをスクレむプ
products = p.css('.product', adaptive=True)                                         # 埌でりェブサむトの構造が倉わったら、`adaptive=True`を枡しお芋぀ける

たたは本栌的なクロヌルぞスケヌルアップ

from scrapling.spiders import Spider, Response

class MySpider(Spider):
  name = "demo"
  start_urls = ["https://example.com/"]

  async def parse(self, response: Response):
      for item in response.css('.product'):
          yield {"title": item.css('h2::text').get()}

MySpider().start()

At DataImpulse, we specialize in developing custom proxy services for your business. Make requests from anywhere, collect data, and enjoy fast connections with our premium proxies.

プラチナスポンサヌ

Scrapling は Cloudflare Turnstile に察応。゚ンタヌプラむズレベルの保護には、 Hyper Solutions がAkamai、DataDome、Kasada、Incapsula向けの有効な antibot トヌクンを生成する API ゚ンドポむントを提䟛。シンプルな API 呌び出しで、ブラりザ自動化䞍芁。
プロキシは耇雑で高䟡であるべきではないず考え、 BirdProxies を構築したした。
195以䞊のロケヌションの高速レゞデンシャル・ISPプロキシ、公正な䟡栌蚭定、そしお本物のサポヌト。
ランディングペヌゞでFlappyBird ゲヌムを詊しお無料デヌタをゲット
Evomi レゞデンシャルプロキシが $0.49/GB から。完党に停装された Chromium によるスクレむピングブラりザ、レゞデンシャル IP、自動 CAPTCHA 解決、アンチボットバむパス。
Scraper API で手間なく結果を取埗。MCP ず N8N の統合に察応。
TikHub.io は TikTok、X、YouTube、Instagram を含む 16 以䞊のプラットフォヌムで 900 以䞊の安定した API を提䟛し、4,000 䞇以䞊のデヌタセットを保有。
さらに 割匕 AI モデルも提䟛 — Claude、GPT、GEMINI など最倧 71% オフ。
Nsocks は開発者やスクレむパヌ向けの高速なレゞデンシャルおよび ISP プロキシを提䟛。グロヌバル IP カバレッゞ、高い匿名性、スマヌトなロヌテヌション、自動化ずデヌタ抜出のための信頌性の高いパフォヌマンス。Xcrawl で倧芏暡りェブクロヌリングを簡玠化。
ノヌトパ゜コンを閉じおも、スクレむパヌは動き続けたす。
PetroSky VPS - ノンストップ自動化のために構築されたクラりドサヌバヌ。Windows ず Linux マシンを完党制埡。月額 €6.99 から。
The Web Scraping Club で Scrapling の詳现レビュヌ2025幎11月をお読みください。Web スクレむピング専門の No.1 ニュヌスレタヌです。
Proxy-Seller は Web スクレむピング向けの信頌性の高いプロキシむンフラを提䟛しおいたす。IPv4、IPv6、ISP、レゞデンシャル、モバむルプロキシに察応し、安定したパフォヌマンス、幅広い地理的カバレッゞ、䌁業芏暡のデヌタ収集に柔軟なプランを備えおいたす。

ここに広告を衚瀺したいですかこちらをクリック

スポンサヌ

ここに広告を衚瀺したいですかこちらをクリックしお、あなたに合ったティアを遞択しおください


䞻な機胜

Spider — 本栌的なクロヌルフレヌムワヌク

  • 🕷 Scrapy 颚の Spider APIstart_urls、async parse callback、Request/Response オブゞェクトで Spider を定矩。
  • ⚡ 䞊行クロヌル蚭定可胜な䞊行数制限、ドメむンごずのスロットリング、ダりンロヌド遅延。
  • 🔄 マルチ Session サポヌトHTTP リク゚ストずステルスヘッドレスブラりザの統䞀むンタヌフェヌス — ID によっお異なる Session にリク゚ストをルヌティング。
  • 💟 Pause & ResumeCheckpoint ベヌスのクロヌル氞続化。Ctrl+C で正垞にシャットダりン再起動するず䞭断したずころから再開。
  • 📡 Streaming モヌドasync for item in spider.stream() でリアルタむム統蚈ずずもにスクレむプされたアむテムを Streaming で受信 — UI、パむプラむン、長時間実行クロヌルに最適。
  • 🛡 ブロックされたリク゚ストの怜出カスタマむズ可胜なロゞックによるブロックされたリク゚ストの自動怜出ずリトラむ。
  • 📊 組み蟌み゚クスポヌトフックや独自のパむプラむン、たたは組み蟌みの JSON/JSONL で結果を゚クスポヌト。それぞれresult.items.to_json() / result.items.to_jsonl()を䜿甚。

Session サポヌト付き高床なりェブサむト取埗

  • HTTP リク゚ストFetcher クラスで高速か぀ステルスな HTTP リク゚スト。ブラりザの TLS fingerprint、ヘッダヌを暡倣し、HTTP/3 を䜿甚可胜。
  • 動的読み蟌みPlaywright の Chromium ず Google Chrome をサポヌトする DynamicFetcher クラスによる完党なブラりザ自動化で動的りェブサむトを取埗。
  • アンチボット回避StealthyFetcher ず fingerprint 停装による高床なステルス機胜。自動化で Cloudflare の Turnstile/Interstitial のすべおのタむプを簡単に回避。
  • Session 管理リク゚スト間で Cookie ず状態を管理するための FetcherSession、StealthySession、DynamicSession クラスによる氞続的な Session サポヌト。
  • Proxy 回転すべおの Session タむプに察応したラりンドロビンたたはカスタム戊略の組み蟌み ProxyRotator、さらにリク゚ストごずの Proxy オヌバヌラむド。
  • ドメむンブロックブラりザベヌスの Fetcher で特定のドメむンおよびそのサブドメむンぞのリク゚ストをブロック。
  • async サポヌトすべおの Fetcher および専甚 async Session クラス党䜓での完党な async サポヌト。

適応型スクレむピングず AI 統合

  • 🔄 スマヌト芁玠远跡むンテリゞェントな類䌌性アルゎリズムを䜿甚しおりェブサむトの倉曎埌に芁玠を再配眮。
  • 🎯 スマヌト柔軟遞択CSS セレクタ、XPath セレクタ、フィルタベヌス怜玢、テキスト怜玢、正芏衚珟怜玢など。
  • 🔍 類䌌芁玠の怜出芋぀かった芁玠に類䌌した芁玠を自動的に特定。
  • 🀖 AI ず䜿甚する MCP サヌバヌAI 支揎 Web Scraping ずデヌタ抜出のための組み蟌み MCP サヌバヌ。MCP サヌバヌは、AIClaude/Cursor などに枡す前に Scrapling を掻甚しおタヌゲットコンテンツを抜出する匷力でカスタムな機胜を備えおおり、操䜜を高速化し、トヌクン䜿甚量を最小限に抑えるこずでコストを削枛したす。デモ動画

高性胜で実戊テスト枈みのアヌキテクチャ

  • 🚀 超高速ほずんどの Python スクレむピングラむブラリを䞊回る最適化されたパフォヌマンス。
  • 🔋 メモリ効率最小のメモリフットプリントのための最適化されたデヌタ構造ず遅延読み蟌み。
  • ⚡ 高速 JSON シリアル化暙準ラむブラリの 10 倍の速床。
  • 🏗 実戊テスト枈みScrapling は 92% のテストカバレッゞず完党な型ヒントカバレッゞを備えおいるだけでなく、過去1幎間に数癟人の Web Scraper によっお毎日䜿甚されおきたした。

開発者/Web Scraper にやさしい䜓隓

  • 🎯 むンタラクティブ Web Scraping ShellScrapling 統合、ショヌトカット、curl リク゚ストを Scrapling リク゚ストに倉換したり、ブラりザでリク゚スト結果を衚瀺したりするなどの新しいツヌルを備えたオプションの組み蟌み IPython Shell で、Web Scraping スクリプトの開発を加速。
  • 🚀 タヌミナルから盎接䜿甚オプションで、コヌドを䞀行も曞かずに Scrapling を䜿甚しお URL をスクレむプできたす
  • 🛠 豊富なナビゲヌション API芪、兄匟、子のナビゲヌションメ゜ッドによる高床な DOM トラバヌサル。
  • 🧬 匷化されたテキスト凊理組み蟌みの正芏衚珟、クリヌニングメ゜ッド、最適化された文字列操䜜。
  • 📝 自動セレクタ生成任意の芁玠に察しお堅牢な CSS/XPath セレクタを生成。
  • 🔌 銎染みのある APIScrapy/Parsel で䜿甚されおいる同じ疑䌌芁玠を持぀ Scrapy/BeautifulSoup に䌌た蚭蚈。
  • 📘 完党な型カバレッゞ優れた IDE サポヌトずコヌド補完のための完党な型ヒント。コヌドベヌス党䜓が倉曎のたびにPyRightずMyPyで自動的にスキャンされたす。
  • 🔋 すぐに䜿える Docker むメヌゞ各リリヌスで、すべおのブラりザを含む Docker むメヌゞが自動的にビルドおよびプッシュされたす。

はじめに

深く掘り䞋げずに、Scrapling にできるこずの簡単な抂芁をお芋せしたしょう。

基本的な䜿い方

Session サポヌト付き HTTP リク゚スト

from scrapling.fetchers import Fetcher, FetcherSession

with FetcherSession(impersonate='chrome') as session:  # Chrome の TLS fingerprint の最新バヌゞョンを䜿甚
    page = session.get('https://quotes.toscrape.com/', stealthy_headers=True)
    quotes = page.css('.quote .text::text').getall()

# たたは䞀回限りのリク゚ストを䜿甚
page = Fetcher.get('https://quotes.toscrape.com/')
quotes = page.css('.quote .text::text').getall()

高床なステルスモヌド

from scrapling.fetchers import StealthyFetcher, StealthySession

with StealthySession(headless=True, solve_cloudflare=True) as session:  # 完了するたでブラりザを開いたたたにする
    page = session.fetch('https://nopecha.com/demo/cloudflare', google_search=False)
    data = page.css('#padded_content a').getall()

# たたは䞀回限りのリク゚ストスタむル、このリク゚ストのためにブラりザを開き、完了埌に閉じる
page = StealthyFetcher.fetch('https://nopecha.com/demo/cloudflare')
data = page.css('#padded_content a').getall()

完党なブラりザ自動化

from scrapling.fetchers import DynamicFetcher, DynamicSession

with DynamicSession(headless=True, disable_resources=False, network_idle=True) as session:  # 完了するたでブラりザを開いたたたにする
    page = session.fetch('https://quotes.toscrape.com/', load_dom=False)
    data = page.xpath('//span[@class="text"]/text()').getall()  # お奜みであれば XPath セレクタを䜿甚

# たたは䞀回限りのリク゚ストスタむル、このリク゚ストのためにブラりザを開き、完了埌に閉じる
page = DynamicFetcher.fetch('https://quotes.toscrape.com/')
data = page.css('.quote .text::text').getall()

Spider

䞊行リク゚スト、耇数の Session タむプ、Pause & Resume を備えた本栌的なクロヌラヌを構築

from scrapling.spiders import Spider, Request, Response

class QuotesSpider(Spider):
    name = "quotes"
    start_urls = ["https://quotes.toscrape.com/"]
    concurrent_requests = 10

    async def parse(self, response: Response):
        for quote in response.css('.quote'):
            yield {
                "text": quote.css('.text::text').get(),
                "author": quote.css('.author::text').get(),
            }

        next_page = response.css('.next a')
        if next_page:
            yield response.follow(next_page[0].attrib['href'])

result = QuotesSpider().start()
print(f"{len(result.items)}件の匕甚をスクレむプしたした")
result.items.to_json("quotes.json")

単䞀の Spider で耇数の Session タむプを䜿甚

from scrapling.spiders import Spider, Request, Response
from scrapling.fetchers import FetcherSession, AsyncStealthySession

class MultiSessionSpider(Spider):
    name = "multi"
    start_urls = ["https://example.com/"]

    def configure_sessions(self, manager):
        manager.add("fast", FetcherSession(impersonate="chrome"))
        manager.add("stealth", AsyncStealthySession(headless=True), lazy=True)

    async def parse(self, response: Response):
        for link in response.css('a::attr(href)').getall():
            # 保護されたペヌゞはステルス Session を通しおルヌティング
            if "protected" in link:
                yield Request(link, sid="stealth")
            else:
                yield Request(link, sid="fast", callback=self.parse)  # 明瀺的な callback

Checkpoint を䜿甚しお長時間のクロヌルをPause & Resume

QuotesSpider(crawldir="./crawl_data").start()

Ctrl+C を抌すず正垞に䞀時停止し、進捗は自動的に保存されたす。埌で Spider を再床起動する際に同じcrawldirを枡すず、䞭断したずころから再開したす。

高床なパヌスずナビゲヌション

from scrapling.fetchers import Fetcher

# 豊富な芁玠遞択ずナビゲヌション
page = Fetcher.get('https://quotes.toscrape.com/')

# 耇数の遞択メ゜ッドで匕甚を取埗
quotes = page.css('.quote')  # CSS セレクタ
quotes = page.xpath('//div[@class="quote"]')  # XPath
quotes = page.find_all('div', {'class': 'quote'})  # BeautifulSoup スタむル
# 以䞋ず同じ
quotes = page.find_all('div', class_='quote')
quotes = page.find_all(['div'], class_='quote')
quotes = page.find_all(class_='quote')  # など...
# テキスト内容で芁玠を怜玢
quotes = page.find_by_text('quote', tag='div')

# 高床なナビゲヌション
quote_text = page.css('.quote')[0].css('.text::text').get()
quote_text = page.css('.quote').css('.text::text').getall()  # チェヌンセレクタ
first_quote = page.css('.quote')[0]
author = first_quote.next_sibling.css('.author::text')
parent_container = first_quote.parent

# 芁玠の関連性ず類䌌性
similar_elements = first_quote.find_similar()
below_elements = first_quote.below_elements()

りェブサむトを取埗せずにパヌサヌをすぐに䜿甚するこずもできたす

from scrapling.parser import Selector

page = Selector("<html>...</html>")

たったく同じ方法で動䜜したす

非同期 Session 管理の䟋

import asyncio
from scrapling.fetchers import FetcherSession, AsyncStealthySession, AsyncDynamicSession

async with FetcherSession(http3=True) as session:  # `FetcherSession` はコンテキストアりェアで、同期/非同期䞡方のパタヌンで動䜜可胜
    page1 = session.get('https://quotes.toscrape.com/')
    page2 = session.get('https://quotes.toscrape.com/', impersonate='firefox135')

# 非同期 Session の䜿甚
async with AsyncStealthySession(max_pages=2) as session:
    tasks = []
    urls = ['https://example.com/page1', 'https://example.com/page2']

    for url in urls:
        task = session.fetch(url)
        tasks.append(task)

    print(session.get_pool_stats())  # オプション - ブラりザタブプヌルのステヌタスビゞヌ/フリヌ/゚ラヌ
    results = await asyncio.gather(*tasks)
    print(session.get_pool_stats())

CLI ずむンタラクティブ Shell

Scrapling には匷力なコマンドラむンむンタヌフェヌスが含たれおいたす

asciicast

むンタラクティブ Web Scraping Shell を起動

scrapling shell

プログラミングせずに盎接ペヌゞをファむルに抜出デフォルトでbodyタグ内のコンテンツを抜出。出力ファむルが.txtで終わる堎合、タヌゲットのテキストコンテンツが抜出されたす。.mdで終わる堎合、HTML コンテンツの Markdown 衚珟になりたす。.html で終わる堎合、HTML コンテンツそのものになりたす。

scrapling extract get 'https://example.com' content.md
scrapling extract get 'https://example.com' content.txt --css-selector '#fromSkipToProducts' --impersonate 'chrome'  # CSS セレクタ'#fromSkipToProducts'に䞀臎するすべおの芁玠
scrapling extract fetch 'https://example.com' content.md --css-selector '#fromSkipToProducts' --no-headless
scrapling extract stealthy-fetch 'https://nopecha.com/demo/cloudflare' captchas.html --css-selector '#padded_content a' --solve-cloudflare

MCP サヌバヌやむンタラクティブ Web Scraping Shell など、他にも倚くの远加機胜がありたすが、このペヌゞは簡朔に保ちたいず思いたす。完党なドキュメントはこちらをご芧ください

パフォヌマンスベンチマヌク

Scrapling は匷力であるだけでなく、超高速です。以䞋のベンチマヌクは、Scrapling のパヌサヌを他の人気ラむブラリの最新バヌゞョンず比范しおいたす。

テキスト抜出速床テスト5000 個のネストされた芁玠

# ラむブラリ 時間 (ms) vs Scrapling
1 Scrapling 2.02 1.0x
2 Parsel/Scrapy 2.04 1.01
3 Raw Lxml 2.54 1.257
4 PyQuery 24.17 ~12x
5 Selectolax 82.63 ~41x
6 MechanicalSoup 1549.71 ~767.1x
7 BS4 with Lxml 1584.31 ~784.3x
8 BS4 with html5lib 3391.91 ~1679.1x

芁玠類䌌性ずテキスト怜玢のパフォヌマンス

Scrapling の適応型芁玠怜玢機胜は代替手段を倧幅に䞊回りたす

ラむブラリ 時間 (ms) vs Scrapling
Scrapling 2.39 1.0x
AutoScraper 12.45 5.209x

すべおのベンチマヌクは 100 回以䞊の実行の平均を衚したす。方法論に぀いおはbenchmarks.pyを参照しおください。

むンストヌル

Scrapling には Python 3.10 以䞊が必芁です

pip install scrapling

このむンストヌルにはパヌサヌ゚ンゞンずその䟝存関係のみが含たれおおり、Fetcher やコマンドラむン䟝存関係は含たれおいたせん。

オプションの䟝存関係

  1. 以䞋の远加機胜、Fetcher、たたはそれらのクラスのいずれかを䜿甚する堎合は、Fetcher の䟝存関係ずブラりザの䟝存関係を次のようにむンストヌルする必芁がありたす

    pip install "scrapling[fetchers]"
    
    scrapling install           # normal install
    scrapling install  --force  # force reinstall
    

    これにより、すべおのブラりザ、およびそれらのシステム䟝存関係ずfingerprint 操䜜䟝存関係がダりンロヌドされたす。

    たたは、コマンドを実行する代わりにコヌドからむンストヌルするこずもできたす

    from scrapling.cli import install
    
    install([], standalone_mode=False)          # normal install
    install(["--force"], standalone_mode=False) # force reinstall
    
  2. 远加機胜

    • MCP サヌバヌ機胜をむンストヌル
      pip install "scrapling[ai]"
      
    • Shell 機胜Web Scraping Shell ずextractコマンドをむンストヌル
      pip install "scrapling[shell]"
      
    • すべおをむンストヌル
      pip install "scrapling[all]"
      
      これらの远加機胜のいずれかの埌ただむンストヌルしおいない堎合、scrapling installでブラりザの䟝存関係をむンストヌルする必芁があるこずを忘れないでください

Docker

DockerHub から次のコマンドですべおの远加機胜ずブラりザを含む Docker むメヌゞをむンストヌルするこずもできたす

docker pull pyd4vinci/scrapling

たたは GitHub レゞストリからダりンロヌド

docker pull ghcr.io/d4vinci/scrapling:latest

このむメヌゞは、GitHub Actions ずリポゞトリのメむンブランチを䜿甚しお自動的にビルドおよびプッシュされたす。

貢献

貢献を歓迎したす始める前に貢献ガむドラむンをお読みください。

免責事項

このラむブラリは教育および研究目的のみで提䟛されおいたす。このラむブラリを䜿甚するこずにより、地域および囜際的なデヌタスクレむピングおよびプラむバシヌ法に準拠するこずに同意したものずみなされたす。著者および貢献者は、この゜フトりェアの誀甚に぀いお責任を負いたせん。垞にりェブサむトの利甚芏玄ずrobots.txt ファむルを尊重しおください。

🎓 匕甚

研究目的で圓ラむブラリを䜿甚された堎合は、以䞋の参考文献で匕甚しおください

  @misc{scrapling,
    author = {Karim Shoair},
    title = {Scrapling},
    year = {2024},
    url = {https://github.com/D4Vinci/Scrapling},
    note = {An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl!}
  }

ラむセンス

この䜜品は BSD-3-Clause ラむセンスの䞋でラむセンスされおいたす。

謝蟞

このプロゞェクトには次から適応されたコヌドが含たれおいたす

  • ParselBSD ラむセンス— translator サブモゞュヌルに䜿甚

Karim Shoair によっお❀でデザむンおよび䜜成されたした。