docs: CJK Latin spacing fixes for the JP README

This commit is contained in:
Karim shoair
2026-03-17 17:12:41 +02:00
parent 74abd54a0b
commit 7bfaf204b7
+77 -77
View File
@@ -36,7 +36,7 @@
<p align="center"> <p align="center">
<a href="https://scrapling.readthedocs.io/en/latest/parsing/selection.html"><strong>選択メソッド</strong></a> <a href="https://scrapling.readthedocs.io/en/latest/parsing/selection.html"><strong>選択メソッド</strong></a>
&middot; &middot;
<a href="https://scrapling.readthedocs.io/en/latest/fetching/choosing.html"><strong>Fetcherの選び方</strong></a> <a href="https://scrapling.readthedocs.io/en/latest/fetching/choosing.html"><strong>Fetcher の選び方</strong></a>
&middot; &middot;
<a href="https://scrapling.readthedocs.io/en/latest/spiders/architecture.html"><strong>スパイダー</strong></a> <a href="https://scrapling.readthedocs.io/en/latest/spiders/architecture.html"><strong>スパイダー</strong></a>
&middot; &middot;
@@ -44,14 +44,14 @@
&middot; &middot;
<a href="https://scrapling.readthedocs.io/en/latest/cli/overview.html"><strong>CLI</strong></a> <a href="https://scrapling.readthedocs.io/en/latest/cli/overview.html"><strong>CLI</strong></a>
&middot; &middot;
<a href="https://scrapling.readthedocs.io/en/latest/ai/mcp-server.html"><strong>MCPモード</strong></a> <a href="https://scrapling.readthedocs.io/en/latest/ai/mcp-server.html"><strong>MCP モード</strong></a>
</p> </p>
Scraplingは、単一のリクエストから本格的なクロールまですべてを処理する適応型Web Scrapingフレームワークです。 Scrapling は、単一のリクエストから本格的なクロールまですべてを処理する適応型 Web Scraping フレームワークです。
そのパーサーはウェブサイトの変更から学習し、ページが更新されたときに要素を自動的に再配置します。Fetcherはすぐに使えるCloudflare Turnstileなどのアンチボットシステムを回避します。そしてSpiderフレームワークにより、Pause & Resumeや自動Proxy回転機能を備えた並行マルチSessionクロールへとスケールアップできます — すべてわずか数行のPythonで。1つのライブラリ、妥協なし。 そのパーサーはウェブサイトの変更から学習し、ページが更新されたときに要素を自動的に再配置します。Fetcher はすぐに使える Cloudflare Turnstile などのアンチボットシステムを回避します。そして Spider フレームワークにより、Pause & Resume や自動 Proxy 回転機能を備えた並行マルチ Session クロールへとスケールアップできます — すべてわずか数行の Python で。1 つのライブラリ、妥協なし。
リアルタイム統計とStreamingによる超高速クロール。Web Scraperによって、Web Scraperと一般ユーザーのために構築され、誰にでも何かがあります。 リアルタイム統計と Streaming による超高速クロール。Web Scraper によって、Web Scraper と一般ユーザーのために構築され、誰にでも何かがあります。
```python ```python
from scrapling.fetchers import Fetcher, AsyncFetcher, StealthyFetcher, DynamicFetcher from scrapling.fetchers import Fetcher, AsyncFetcher, StealthyFetcher, DynamicFetcher
@@ -89,9 +89,9 @@ MySpider().start()
<img src="https://raw.githubusercontent.com/D4Vinci/Scrapling/main/images/HyperSolutions.png"> <img src="https://raw.githubusercontent.com/D4Vinci/Scrapling/main/images/HyperSolutions.png">
</a> </a>
</td> </td>
<td> ScraplingCloudflare Turnstileに対応。エンタープライズレベルの保護には、<a href="https://hypersolutions.co?utm_source=github&utm_medium=readme&utm_campaign=scrapling"> <td> ScraplingCloudflare Turnstile に対応。エンタープライズレベルの保護には、<a href="https://hypersolutions.co?utm_source=github&utm_medium=readme&utm_campaign=scrapling">
<b>Hyper Solutions</b> <b>Hyper Solutions</b>
</a>が<b>Akamai</b>、<b>DataDome</b>、<b>Kasada</b>、<b>Incapsula</b>向けの有効なantibotトークンを生成するAPIエンドポイントを提供。シンプルなAPI呼び出しで、ブラウザ自動化不要。 </td> </a>が<b>Akamai</b>、<b>DataDome</b>、<b>Kasada</b>、<b>Incapsula</b>向けの有効な antibot トークンを生成する API エンドポイントを提供。シンプルな API 呼び出しで、ブラウザ自動化不要。 </td>
</tr> </tr>
<tr> <tr>
<td width="200"> <td width="200">
@@ -102,7 +102,7 @@ MySpider().start()
<td>プロキシは複雑で高価であるべきではないと考え、<a href="https://birdproxies.com/t/scrapling"> <td>プロキシは複雑で高価であるべきではないと考え、<a href="https://birdproxies.com/t/scrapling">
<b>BirdProxies</b> <b>BirdProxies</b>
</a>を構築しました。 <br /> 195以上のロケーションの高速レジデンシャル・ISPプロキシ、公正な価格設定、そして本物のサポート。 <br /> </a>を構築しました。 <br /> 195以上のロケーションの高速レジデンシャル・ISPプロキシ、公正な価格設定、そして本物のサポート。 <br />
<b>ランディングページでFlappyBirdゲームを試して無料データをゲット!</b> <b>ランディングページでFlappyBird ゲームを試して無料データをゲット!</b>
</td> </td>
</tr> </tr>
<tr> <tr>
@@ -146,7 +146,7 @@ MySpider().start()
</td> </td>
<td> <td>
ノートパソコンを閉じても、スクレイパーは動き続けます。<br /> ノートパソコンを閉じても、スクレイパーは動き続けます。<br />
<a href="https://petrosky.io/d4vinci" target="_blank">PetroSky VPS</a> - ノンストップ自動化のために構築されたクラウドサーバー。WindowsLinuxマシンを完全制御。月額€6.99から。 <a href="https://petrosky.io/d4vinci" target="_blank">PetroSky VPS</a> - ノンストップ自動化のために構築されたクラウドサーバー。WindowsLinux マシンを完全制御。月額 €6.99 から。
</td> </td>
</tr> </tr>
<tr> <tr>
@@ -156,7 +156,7 @@ MySpider().start()
</a> </a>
</td> </td>
<td> <td>
<a href="https://substack.thewebscraping.club/p/scrapling-hands-on-guide?utm_source=github&utm_medium=repo&utm_campaign=scrapling" target="_blank">The Web Scraping ClubScraplingの詳細レビュー</a>(2025年11月)をお読みください。Webスクレイピング専門のNo.1ニュースレターです。 <a href="https://substack.thewebscraping.club/p/scrapling-hands-on-guide?utm_source=github&utm_medium=repo&utm_campaign=scrapling" target="_blank">The Web Scraping ClubScrapling の詳細レビュー</a>(2025年11月)をお読みください。Web スクレイピング専門の No.1 ニュースレターです。
</td> </td>
</tr> </tr>
<tr> <tr>
@@ -192,55 +192,55 @@ MySpider().start()
## 主な機能 ## 主な機能
### Spider — 本格的なクロールフレームワーク ### Spider — 本格的なクロールフレームワーク
- 🕷️ **Scrapy風のSpider API**`start_urls`、async `parse` callback、`Request`/`Response`オブジェクトでSpiderを定義。 - 🕷️ **Scrapy 風の Spider API**`start_urls`、async `parse` callback、`Request`/`Response` オブジェクトで Spider を定義。
-**並行クロール**:設定可能な並行数制限、ドメインごとのスロットリング、ダウンロード遅延。 -**並行クロール**:設定可能な並行数制限、ドメインごとのスロットリング、ダウンロード遅延。
- 🔄 **マルチSessionサポート**:HTTPリクエストとステルスヘッドレスブラウザの統一インターフェース — IDによって異なるSessionにリクエストをルーティング。 - 🔄 **マルチ Session サポート**HTTP リクエストとステルスヘッドレスブラウザの統一インターフェース — ID によって異なる Session にリクエストをルーティング。
- 💾 **Pause & Resume**:Checkpointベースのクロール永続化。Ctrl+Cで正常にシャットダウン;再起動すると中断したところから再開。 - 💾 **Pause & Resume**Checkpoint ベースのクロール永続化。Ctrl+C で正常にシャットダウン;再起動すると中断したところから再開。
- 📡 **Streamingモード**`async for item in spider.stream()`でリアルタイム統計とともにスクレイプされたアイテムをStreamingで受信 — UI、パイプライン、長時間実行クロールに最適。 - 📡 **Streaming モード**`async for item in spider.stream()` でリアルタイム統計とともにスクレイプされたアイテムを Streaming で受信 — UI、パイプライン、長時間実行クロールに最適。
- 🛡️ **ブロックされたリクエストの検出**:カスタマイズ可能なロジックによるブロックされたリクエストの自動検出とリトライ。 - 🛡️ **ブロックされたリクエストの検出**:カスタマイズ可能なロジックによるブロックされたリクエストの自動検出とリトライ。
- 📦 **組み込みエクスポート**:フックや独自のパイプライン、または組み込みのJSON/JSONLで結果をエクスポート。それぞれ`result.items.to_json()` / `result.items.to_jsonl()`を使用。 - 📦 **組み込みエクスポート**:フックや独自のパイプライン、または組み込みの JSON/JSONL で結果をエクスポート。それぞれ`result.items.to_json()` / `result.items.to_jsonl()`を使用。
### Sessionサポート付き高度なウェブサイト取得 ### Session サポート付き高度なウェブサイト取得
- **HTTPリクエスト**`Fetcher`クラスで高速かつステルスなHTTPリクエスト。ブラウザのTLS fingerprint、ヘッダーを模倣し、HTTP/3を使用可能。 - **HTTP リクエスト**`Fetcher` クラスで高速かつステルスな HTTP リクエスト。ブラウザの TLS fingerprint、ヘッダーを模倣し、HTTP/3 を使用可能。
- **動的読み込み**PlaywrightChromiumGoogle Chromeをサポートする`DynamicFetcher`クラスによる完全なブラウザ自動化で動的ウェブサイトを取得。 - **動的読み込み**PlaywrightChromiumGoogle Chrome をサポートする `DynamicFetcher` クラスによる完全なブラウザ自動化で動的ウェブサイトを取得。
- **アンチボット回避**`StealthyFetcher`fingerprint偽装による高度なステルス機能。自動化でCloudflareTurnstile/Interstitialのすべてのタイプを簡単に回避。 - **アンチボット回避**`StealthyFetcher`fingerprint 偽装による高度なステルス機能。自動化で CloudflareTurnstile/Interstitial のすべてのタイプを簡単に回避。
- **Session管理**:リクエスト間でCookieと状態を管理するための`FetcherSession``StealthySession``DynamicSession`クラスによる永続的なSessionサポート。 - **Session 管理**:リクエスト間で Cookie と状態を管理するための `FetcherSession``StealthySession``DynamicSession` クラスによる永続的な Session サポート。
- **Proxy回転**:すべてのSessionタイプに対応したラウンドロビンまたはカスタム戦略の組み込み`ProxyRotator`、さらにリクエストごとのProxyオーバーライド。 - **Proxy 回転**:すべての Session タイプに対応したラウンドロビンまたはカスタム戦略の組み込み `ProxyRotator`、さらにリクエストごとの Proxy オーバーライド。
- **ドメインブロック**:ブラウザベースのFetcherで特定のドメイン(およびそのサブドメイン)へのリクエストをブロック。 - **ドメインブロック**:ブラウザベースの Fetcher で特定のドメイン(およびそのサブドメイン)へのリクエストをブロック。
- **asyncサポート**:すべてのFetcherおよび専用asyncSessionクラス全体での完全なasyncサポート。 - **async サポート**:すべての Fetcher および専用 async Session クラス全体での完全な async サポート。
### 適応型スクレイピングとAI統合 ### 適応型スクレイピングと AI 統合
- 🔄 **スマート要素追跡**:インテリジェントな類似性アルゴリズムを使用してウェブサイトの変更後に要素を再配置。 - 🔄 **スマート要素追跡**:インテリジェントな類似性アルゴリズムを使用してウェブサイトの変更後に要素を再配置。
- 🎯 **スマート柔軟選択**:CSSセレクタ、XPathセレクタ、フィルタベース検索、テキスト検索、正規表現検索など。 - 🎯 **スマート柔軟選択**CSS セレクタ、XPath セレクタ、フィルタベース検索、テキスト検索、正規表現検索など。
- 🔍 **類似要素の検出**:見つかった要素に類似した要素を自動的に特定。 - 🔍 **類似要素の検出**:見つかった要素に類似した要素を自動的に特定。
- 🤖 **AIと使用するMCPサーバー**AI支援Web Scrapingとデータ抽出のための組み込みMCPサーバー。MCPサーバーは、AIClaude/Cursorなど)に渡す前にScraplingを活用してターゲットコンテンツを抽出する強力でカスタムな機能を備えており、操作を高速化し、トークン使用量を最小限に抑えることでコストを削減します。([デモ動画](https://www.youtube.com/watch?v=qyFk3ZNwOxE) - 🤖 **AI と使用する MCP サーバー**AI 支援 Web Scraping とデータ抽出のための組み込み MCP サーバー。MCP サーバーは、AIClaude/Cursor など)に渡す前に Scrapling を活用してターゲットコンテンツを抽出する強力でカスタムな機能を備えており、操作を高速化し、トークン使用量を最小限に抑えることでコストを削減します。([デモ動画](https://www.youtube.com/watch?v=qyFk3ZNwOxE)
### 高性能で実戦テスト済みのアーキテクチャ ### 高性能で実戦テスト済みのアーキテクチャ
- 🚀 **超高速**:ほとんどのPythonスクレイピングライブラリを上回る最適化されたパフォーマンス。 - 🚀 **超高速**:ほとんどの Python スクレイピングライブラリを上回る最適化されたパフォーマンス。
- 🔋 **メモリ効率**:最小のメモリフットプリントのための最適化されたデータ構造と遅延読み込み。 - 🔋 **メモリ効率**:最小のメモリフットプリントのための最適化されたデータ構造と遅延読み込み。
-**高速JSONシリアル化**:標準ライブラリの10倍の速度。 -**高速 JSON シリアル化**:標準ライブラリの 10 倍の速度。
- 🏗️ **実戦テスト済み**Scrapling92%のテストカバレッジと完全な型ヒントカバレッジを備えているだけでなく、過去1年間に数百人のWeb Scraperによって毎日使用されてきました。 - 🏗️ **実戦テスト済み**Scrapling92% のテストカバレッジと完全な型ヒントカバレッジを備えているだけでなく、過去1年間に数百人の Web Scraper によって毎日使用されてきました。
### 開発者/Web Scraperにやさしい体験 ### 開発者/Web Scraper にやさしい体験
- 🎯 **インタラクティブWeb Scraping Shell**:Scrapling統合、ショートカット、curlリクエストをScraplingリクエストに変換したり、ブラウザでリクエスト結果を表示したりするなどの新しいツールを備えたオプションの組み込みIPython Shellで、Web Scrapingスクリプトの開発を加速。 - 🎯 **インタラクティブ Web Scraping Shell**Scrapling 統合、ショートカット、curl リクエストを Scrapling リクエストに変換したり、ブラウザでリクエスト結果を表示したりするなどの新しいツールを備えたオプションの組み込み IPython Shell で、Web Scraping スクリプトの開発を加速。
- 🚀 **ターミナルから直接使用**:オプションで、コードを一行も書かずにScraplingを使用してURLをスクレイプできます! - 🚀 **ターミナルから直接使用**:オプションで、コードを一行も書かずに Scrapling を使用して URL をスクレイプできます!
- 🛠️ **豊富なナビゲーションAPI**:親、兄弟、子のナビゲーションメソッドによる高度なDOMトラバーサル。 - 🛠️ **豊富なナビゲーション API**:親、兄弟、子のナビゲーションメソッドによる高度な DOM トラバーサル。
- 🧬 **強化されたテキスト処理**:組み込みの正規表現、クリーニングメソッド、最適化された文字列操作。 - 🧬 **強化されたテキスト処理**:組み込みの正規表現、クリーニングメソッド、最適化された文字列操作。
- 📝 **自動セレクタ生成**:任意の要素に対して堅牢なCSS/XPathセレクタを生成。 - 📝 **自動セレクタ生成**:任意の要素に対して堅牢な CSS/XPath セレクタを生成。
- 🔌 **馴染みのあるAPI**Scrapy/Parselで使用されている同じ疑似要素を持つScrapy/BeautifulSoupに似た設計。 - 🔌 **馴染みのある API**Scrapy/Parsel で使用されている同じ疑似要素を持つ Scrapy/BeautifulSoup に似た設計。
- 📘 **完全な型カバレッジ**:優れたIDEサポートとコード補完のための完全な型ヒント。コードベース全体が変更のたびに**PyRight**と**MyPy**で自動的にスキャンされます。 - 📘 **完全な型カバレッジ**:優れた IDE サポートとコード補完のための完全な型ヒント。コードベース全体が変更のたびに**PyRight**と**MyPy**で自動的にスキャンされます。
- 🔋 **すぐに使えるDockerイメージ**:各リリースで、すべてのブラウザを含むDockerイメージが自動的にビルドおよびプッシュされます。 - 🔋 **すぐに使える Docker イメージ**:各リリースで、すべてのブラウザを含む Docker イメージが自動的にビルドおよびプッシュされます。
## はじめに ## はじめに
深く掘り下げずに、Scraplingにできることの簡単な概要をお見せしましょう。 深く掘り下げずに、Scrapling にできることの簡単な概要をお見せしましょう。
### 基本的な使い方 ### 基本的な使い方
Sessionサポート付きHTTPリクエスト Session サポート付き HTTP リクエスト
```python ```python
from scrapling.fetchers import Fetcher, FetcherSession from scrapling.fetchers import Fetcher, FetcherSession
with FetcherSession(impersonate='chrome') as session: # ChromeTLS fingerprintの最新バージョンを使用 with FetcherSession(impersonate='chrome') as session: # ChromeTLS fingerprint の最新バージョンを使用
page = session.get('https://quotes.toscrape.com/', stealthy_headers=True) page = session.get('https://quotes.toscrape.com/', stealthy_headers=True)
quotes = page.css('.quote .text::text').getall() quotes = page.css('.quote .text::text').getall()
@@ -266,7 +266,7 @@ from scrapling.fetchers import DynamicFetcher, DynamicSession
with DynamicSession(headless=True, disable_resources=False, network_idle=True) as session: # 完了するまでブラウザを開いたままにする with DynamicSession(headless=True, disable_resources=False, network_idle=True) as session: # 完了するまでブラウザを開いたままにする
page = session.fetch('https://quotes.toscrape.com/', load_dom=False) page = session.fetch('https://quotes.toscrape.com/', load_dom=False)
data = page.xpath('//span[@class="text"]/text()').getall() # お好みであればXPathセレクタを使用 data = page.xpath('//span[@class="text"]/text()').getall() # お好みであれば XPath セレクタを使用
# または一回限りのリクエストスタイル、このリクエストのためにブラウザを開き、完了後に閉じる # または一回限りのリクエストスタイル、このリクエストのためにブラウザを開き、完了後に閉じる
page = DynamicFetcher.fetch('https://quotes.toscrape.com/') page = DynamicFetcher.fetch('https://quotes.toscrape.com/')
@@ -274,7 +274,7 @@ data = page.css('.quote .text::text').getall()
``` ```
### Spider ### Spider
並行リクエスト、複数のSessionタイプ、Pause & Resumeを備えた本格的なクローラーを構築: 並行リクエスト、複数の Session タイプ、Pause & Resume を備えた本格的なクローラーを構築:
```python ```python
from scrapling.spiders import Spider, Request, Response from scrapling.spiders import Spider, Request, Response
@@ -298,7 +298,7 @@ result = QuotesSpider().start()
print(f"{len(result.items)}件の引用をスクレイプしました") print(f"{len(result.items)}件の引用をスクレイプしました")
result.items.to_json("quotes.json") result.items.to_json("quotes.json")
``` ```
単一のSpiderで複数のSessionタイプを使用: 単一の Spider で複数の Session タイプを使用:
```python ```python
from scrapling.spiders import Spider, Request, Response from scrapling.spiders import Spider, Request, Response
from scrapling.fetchers import FetcherSession, AsyncStealthySession from scrapling.fetchers import FetcherSession, AsyncStealthySession
@@ -313,17 +313,17 @@ class MultiSessionSpider(Spider):
async def parse(self, response: Response): async def parse(self, response: Response):
for link in response.css('a::attr(href)').getall(): for link in response.css('a::attr(href)').getall():
# 保護されたページはステルスSessionを通してルーティング # 保護されたページはステルス Session を通してルーティング
if "protected" in link: if "protected" in link:
yield Request(link, sid="stealth") yield Request(link, sid="stealth")
else: else:
yield Request(link, sid="fast", callback=self.parse) # 明示的なcallback yield Request(link, sid="fast", callback=self.parse) # 明示的な callback
``` ```
Checkpointを使用して長時間のクロールをPause & Resume Checkpoint を使用して長時間のクロールをPause & Resume
```python ```python
QuotesSpider(crawldir="./crawl_data").start() QuotesSpider(crawldir="./crawl_data").start()
``` ```
Ctrl+Cを押すと正常に一時停止し、進捗は自動的に保存されます。後でSpiderを再度起動する際に同じ`crawldir`を渡すと、中断したところから再開します。 Ctrl+C を押すと正常に一時停止し、進捗は自動的に保存されます。後で Spider を再度起動する際に同じ`crawldir`を渡すと、中断したところから再開します。
### 高度なパースとナビゲーション ### 高度なパースとナビゲーション
```python ```python
@@ -333,9 +333,9 @@ from scrapling.fetchers import Fetcher
page = Fetcher.get('https://quotes.toscrape.com/') page = Fetcher.get('https://quotes.toscrape.com/')
# 複数の選択メソッドで引用を取得 # 複数の選択メソッドで引用を取得
quotes = page.css('.quote') # CSSセレクタ quotes = page.css('.quote') # CSS セレクタ
quotes = page.xpath('//div[@class="quote"]') # XPath quotes = page.xpath('//div[@class="quote"]') # XPath
quotes = page.find_all('div', {'class': 'quote'}) # BeautifulSoupスタイル 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(['div'], class_='quote') quotes = page.find_all(['div'], class_='quote')
@@ -362,16 +362,16 @@ page = Selector("<html>...</html>")
``` ```
まったく同じ方法で動作します! まったく同じ方法で動作します!
### 非同期Session管理の例 ### 非同期 Session 管理の例
```python ```python
import asyncio import asyncio
from scrapling.fetchers import FetcherSession, AsyncStealthySession, AsyncDynamicSession from scrapling.fetchers import FetcherSession, AsyncStealthySession, AsyncDynamicSession
async with FetcherSession(http3=True) as session: # `FetcherSession`はコンテキストアウェアで、同期/非同期両方のパターンで動作可能 async with FetcherSession(http3=True) as session: # `FetcherSession` はコンテキストアウェアで、同期/非同期両方のパターンで動作可能
page1 = session.get('https://quotes.toscrape.com/') page1 = session.get('https://quotes.toscrape.com/')
page2 = session.get('https://quotes.toscrape.com/', impersonate='firefox135') page2 = session.get('https://quotes.toscrape.com/', impersonate='firefox135')
# 非同期Sessionの使用 # 非同期 Session の使用
async with AsyncStealthySession(max_pages=2) as session: async with AsyncStealthySession(max_pages=2) as session:
tasks = [] tasks = []
urls = ['https://example.com/page1', 'https://example.com/page2'] urls = ['https://example.com/page1', 'https://example.com/page2']
@@ -385,34 +385,34 @@ async with AsyncStealthySession(max_pages=2) as session:
print(session.get_pool_stats()) print(session.get_pool_stats())
``` ```
## CLIとインタラクティブShell ## CLI とインタラクティブ Shell
Scraplingには強力なコマンドラインインターフェースが含まれています: Scrapling には強力なコマンドラインインターフェースが含まれています:
[![asciicast](https://asciinema.org/a/736339.svg)](https://asciinema.org/a/736339) [![asciicast](https://asciinema.org/a/736339.svg)](https://asciinema.org/a/736339)
インタラクティブWeb Scraping Shellを起動 インタラクティブ Web Scraping Shell を起動
```bash ```bash
scrapling shell scrapling shell
``` ```
プログラミングせずに直接ページをファイルに抽出(デフォルトで`body`タグ内のコンテンツを抽出)。出力ファイルが`.txt`で終わる場合、ターゲットのテキストコンテンツが抽出されます。`.md`で終わる場合、HTMLコンテンツのMarkdown表現になります。`.html`で終わる場合、HTMLコンテンツそのものになります。 プログラミングせずに直接ページをファイルに抽出(デフォルトで`body`タグ内のコンテンツを抽出)。出力ファイルが`.txt`で終わる場合、ターゲットのテキストコンテンツが抽出されます。`.md`で終わる場合、HTML コンテンツの Markdown 表現になります。`.html` で終わる場合、HTML コンテンツそのものになります。
```bash ```bash
scrapling extract get 'https://example.com' content.md 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 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 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 scrapling extract stealthy-fetch 'https://nopecha.com/demo/cloudflare' captchas.html --css-selector '#padded_content a' --solve-cloudflare
``` ```
> [!NOTE] > [!NOTE]
> MCPサーバーやインタラクティブWeb Scraping Shellなど、他にも多くの追加機能がありますが、このページは簡潔に保ちたいと思います。完全なドキュメントは[こちら](https://scrapling.readthedocs.io/en/latest/)をご覧ください > MCP サーバーやインタラクティブ Web Scraping Shell など、他にも多くの追加機能がありますが、このページは簡潔に保ちたいと思います。完全なドキュメントは[こちら](https://scrapling.readthedocs.io/en/latest/)をご覧ください
## パフォーマンスベンチマーク ## パフォーマンスベンチマーク
Scraplingは強力であるだけでなく、超高速です。以下のベンチマークは、Scraplingのパーサーを他の人気ライブラリの最新バージョンと比較しています。 Scrapling は強力であるだけでなく、超高速です。以下のベンチマークは、Scrapling のパーサーを他の人気ライブラリの最新バージョンと比較しています。
### テキスト抽出速度テスト(5000個のネストされた要素) ### テキスト抽出速度テスト(5000 個のネストされた要素)
| # | ライブラリ | 時間(ms) | vs Scrapling | | # | ライブラリ | 時間 (ms) | vs Scrapling |
|---|:-----------------:|:---------:|:------------:| |---|:-----------------:|:---------:|:------------:|
| 1 | Scrapling | 2.02 | 1.0x | | 1 | Scrapling | 2.02 | 1.0x |
| 2 | Parsel/Scrapy | 2.04 | 1.01 | | 2 | Parsel/Scrapy | 2.04 | 1.01 |
@@ -426,29 +426,29 @@ Scraplingは強力であるだけでなく、超高速です。以下のベン
### 要素類似性とテキスト検索のパフォーマンス ### 要素類似性とテキスト検索のパフォーマンス
Scraplingの適応型要素検索機能は代替手段を大幅に上回ります: Scrapling の適応型要素検索機能は代替手段を大幅に上回ります:
| ライブラリ | 時間(ms) | vs Scrapling | | ライブラリ | 時間 (ms) | vs Scrapling |
|-------------|:---------:|:------------:| |-------------|:---------:|:------------:|
| Scrapling | 2.39 | 1.0x | | Scrapling | 2.39 | 1.0x |
| AutoScraper | 12.45 | 5.209x | | AutoScraper | 12.45 | 5.209x |
> すべてのベンチマークは100回以上の実行の平均を表します。方法論については[benchmarks.py](https://github.com/D4Vinci/Scrapling/blob/main/benchmarks.py)を参照してください。 > すべてのベンチマークは 100 回以上の実行の平均を表します。方法論については[benchmarks.py](https://github.com/D4Vinci/Scrapling/blob/main/benchmarks.py)を参照してください。
## インストール ## インストール
ScraplingにはPython 3.10以上が必要です: Scrapling には Python 3.10 以上が必要です:
```bash ```bash
pip install scrapling pip install scrapling
``` ```
このインストールにはパーサーエンジンとその依存関係のみが含まれており、Fetcherやコマンドライン依存関係は含まれていません。 このインストールにはパーサーエンジンとその依存関係のみが含まれており、Fetcher やコマンドライン依存関係は含まれていません。
### オプションの依存関係 ### オプションの依存関係
1. 以下の追加機能、Fetcher、またはそれらのクラスのいずれかを使用する場合は、Fetcherの依存関係とブラウザの依存関係を次のようにインストールする必要があります: 1. 以下の追加機能、Fetcher、またはそれらのクラスのいずれかを使用する場合は、Fetcher の依存関係とブラウザの依存関係を次のようにインストールする必要があります:
```bash ```bash
pip install "scrapling[fetchers]" pip install "scrapling[fetchers]"
@@ -456,7 +456,7 @@ pip install scrapling
scrapling install --force # force reinstall scrapling install --force # force reinstall
``` ```
これにより、すべてのブラウザ、およびそれらのシステム依存関係とfingerprint操作依存関係がダウンロードされます。 これにより、すべてのブラウザ、およびそれらのシステム依存関係とfingerprint 操作依存関係がダウンロードされます。
または、コマンドを実行する代わりにコードからインストールすることもできます: または、コマンドを実行する代わりにコードからインストールすることもできます:
```python ```python
@@ -467,11 +467,11 @@ pip install scrapling
``` ```
2. 追加機能: 2. 追加機能:
- MCPサーバー機能をインストール: - MCP サーバー機能をインストール:
```bash ```bash
pip install "scrapling[ai]" pip install "scrapling[ai]"
``` ```
- Shell機能(Web Scraping Shellと`extract`コマンド)をインストール: - Shell 機能(Web Scraping Shell と`extract`コマンド)をインストール:
```bash ```bash
pip install "scrapling[shell]" pip install "scrapling[shell]"
``` ```
@@ -482,15 +482,15 @@ pip install scrapling
これらの追加機能のいずれかの後(まだインストールしていない場合)、`scrapling install`でブラウザの依存関係をインストールする必要があることを忘れないでください これらの追加機能のいずれかの後(まだインストールしていない場合)、`scrapling install`でブラウザの依存関係をインストールする必要があることを忘れないでください
### Docker ### Docker
DockerHubから次のコマンドですべての追加機能とブラウザを含むDockerイメージをインストールすることもできます: DockerHub から次のコマンドですべての追加機能とブラウザを含む Docker イメージをインストールすることもできます:
```bash ```bash
docker pull pyd4vinci/scrapling docker pull pyd4vinci/scrapling
``` ```
またはGitHubレジストリからダウンロード: または GitHub レジストリからダウンロード:
```bash ```bash
docker pull ghcr.io/d4vinci/scrapling:latest docker pull ghcr.io/d4vinci/scrapling:latest
``` ```
このイメージは、GitHub Actionsとリポジトリのメインブランチを使用して自動的にビルドおよびプッシュされます。 このイメージは、GitHub Actions とリポジトリのメインブランチを使用して自動的にビルドおよびプッシュされます。
## 貢献 ## 貢献
@@ -499,7 +499,7 @@ docker pull ghcr.io/d4vinci/scrapling:latest
## 免責事項 ## 免責事項
> [!CAUTION] > [!CAUTION]
> このライブラリは教育および研究目的のみで提供されています。このライブラリを使用することにより、地域および国際的なデータスクレイピングおよびプライバシー法に準拠することに同意したものとみなされます。著者および貢献者は、このソフトウェアの誤用について責任を負いません。常にウェブサイトの利用規約とrobots.txtファイルを尊重してください。 > このライブラリは教育および研究目的のみで提供されています。このライブラリを使用することにより、地域および国際的なデータスクレイピングおよびプライバシー法に準拠することに同意したものとみなされます。著者および貢献者は、このソフトウェアの誤用について責任を負いません。常にウェブサイトの利用規約とrobots.txt ファイルを尊重してください。
## 🎓 引用 ## 🎓 引用
研究目的で当ライブラリを使用された場合は、以下の参考文献で引用してください: 研究目的で当ライブラリを使用された場合は、以下の参考文献で引用してください:
@@ -515,12 +515,12 @@ docker pull ghcr.io/d4vinci/scrapling:latest
## ライセンス ## ライセンス
この作品はBSD-3-Clauseライセンスの下でライセンスされています。 この作品は BSD-3-Clause ライセンスの下でライセンスされています。
## 謝辞 ## 謝辞
このプロジェクトには次から適応されたコードが含まれています: このプロジェクトには次から適応されたコードが含まれています:
- ParselBSDライセンス)— [translator](https://github.com/D4Vinci/Scrapling/blob/main/scrapling/core/translator.py)サブモジュールに使用 - ParselBSD ライセンス)— [translator](https://github.com/D4Vinci/Scrapling/blob/main/scrapling/core/translator.py) サブモジュールに使用
--- ---
<div align="center"><small>Karim Shoairによって❤️でデザインおよび作成されました。</small></div><br> <div align="center"><small>Karim Shoair によって❤️でデザインおよび作成されました。</small></div><br>