diff --git a/README.md b/README.md
index cf3e6be..dfb7d7f 100644
--- a/README.md
+++ b/README.md
@@ -38,17 +38,17 @@
- Selection methods
+ Selection methods
·
- Fetchers
+ Fetchers
·
Spiders
·
Proxy Rotation
·
- CLI
+ CLI
·
- MCP
+ MCP
Scrapling is an adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl.
@@ -163,6 +163,16 @@ MySpider().start()
Read a full review of Scrapling on The Web Scraping Club (Nov 2025), the #1 newsletter dedicated to Web Scraping.
+
+
+
+
+
+ |
+
+ Proxy-Seller provides reliable proxy infrastructure for web scraping, offering IPv4, IPv6, ISP, Residential, and Mobile proxies with stable performance, broad geo coverage, and flexible plans for business-scale data collection.
+ |
+
Do you want to show your ad here? Click [here](https://github.com/sponsors/D4Vinci/sponsorships?tier_id=586646)
diff --git a/docs/README_AR.md b/docs/README_AR.md
index 8db1672..7573a10 100644
--- a/docs/README_AR.md
+++ b/docs/README_AR.md
@@ -34,17 +34,17 @@
- طرق الاختيار
+ طرق الاختيار
·
- اختيار Fetcher
+ اختيار Fetcher
·
العناكب
·
تدوير البروكسي
·
- واجهة سطر الأوامر
+ واجهة سطر الأوامر
·
- وضع MCP
+ وضع MCP
Scrapling هو إطار عمل تكيفي لـ Web Scraping يتعامل مع كل شيء من طلب واحد إلى زحف كامل النطاق.
@@ -159,6 +159,16 @@ MySpider().start()
اقرأ مراجعة كاملة عن Scrapling على The Web Scraping Club (نوفمبر 2025)، النشرة الإخبارية الأولى المخصصة لكشط الويب.
+
+
+
+
+
+ |
+
+ Proxy-Seller يوفر بنية تحتية موثوقة للبروكسي لكشط الويب، بما في ذلك بروكسيات IPv4 وIPv6 وISP والسكنية والمحمولة مع أداء مستقر وتغطية جغرافية واسعة وخطط مرنة لجمع البيانات على نطاق الأعمال.
+ |
+
هل تريد عرض إعلانك هنا؟ انقر [هنا](https://github.com/sponsors/D4Vinci/sponsorships?tier_id=586646)
diff --git a/docs/README_CN.md b/docs/README_CN.md
index 297b5ba..be91908 100644
--- a/docs/README_CN.md
+++ b/docs/README_CN.md
@@ -34,24 +34,24 @@
- 选择方法
+ 选择方法
·
- 选择Fetcher
+ 选择 Fetcher
·
爬虫
·
代理轮换
·
- CLI
+ CLI
·
- MCP模式
+ MCP 模式
-Scrapling是一个自适应Web Scraping框架,能处理从单个请求到大规模爬取的一切需求。
+Scrapling 是一个自适应 Web Scraping 框架,能处理从单个请求到大规模爬取的一切需求。
-它的解析器能够从网站变化中学习,并在页面更新时自动重新定位您的元素。它的Fetcher能够开箱即用地绕过Cloudflare Turnstile等反机器人系统。它的Spider框架让您可以扩展到并发、多Session爬取,支持暂停/恢复和自动Proxy轮换——只需几行Python代码。一个库,零妥协。
+它的解析器能够从网站变化中学习,并在页面更新时自动重新定位您的元素。它的 Fetcher 能够开箱即用地绕过 Cloudflare Turnstile 等反机器人系统。它的 Spider 框架让您可以扩展到并发、多 Session 爬取,支持暂停/恢复和自动 Proxy 轮换——只需几行 Python 代码。一个库,零妥协。
-极速爬取,实时统计和Streaming。由Web Scraper为Web Scraper和普通用户而构建,每个人都能找到适合自己的功能。
+极速爬取,实时统计和 Streaming。由 Web Scraper 为 Web Scraper 和普通用户而构建,每个人都能找到适合自己的功能。
```python
from scrapling.fetchers import Fetcher, AsyncFetcher, StealthyFetcher, DynamicFetcher
@@ -156,12 +156,22 @@ MySpider().start()
- 阅读 The Web Scraping Club 上关于 Scrapling 的完整评测(2025年11月),这是排名第一的网页抓取专业通讯。
+ 阅读 The Web Scraping Club 上关于 Scrapling 的完整评测(2025 年 11 月),这是排名第一的网页抓取专业通讯。
+ |
+
+
+
+
+
+
+ |
+
+ Proxy-Seller 提供可靠的网页抓取代理基础设施,包括 IPv4、IPv6、ISP、住宅和移动代理,具备稳定性能、广泛的地理覆盖和灵活的企业级数据采集方案。
|
-想在这里展示您的广告吗?点击[这里](https://github.com/sponsors/D4Vinci/sponsorships?tier_id=586646)
+想在这里展示您的广告吗?点击 [这里](https://github.com/sponsors/D4Vinci/sponsorships?tier_id=586646)
# 赞助商
@@ -175,62 +185,62 @@ MySpider().start()
-想在这里展示您的广告吗?点击[这里](https://github.com/sponsors/D4Vinci)并选择适合您的级别!
+想在这里展示您的广告吗?点击 [这里](https://github.com/sponsors/D4Vinci) 并选择适合您的级别!
---
## 主要特性
### 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请求和隐秘无头浏览器在同一个Spider中使用——通过ID将请求路由到不同的Session。
-- 💾 **暂停与恢复**:基于Checkpoint的爬取持久化。按Ctrl+C优雅关闭;重启后从上次停止的地方继续。
-- 📡 **Streaming模式**:通过`async for item in spider.stream()`以实时统计Streaming抓取的数据——非常适合UI、管道和长时间运行的爬取。
+- 🔄 **多 Session 支持**:统一接口,支持 HTTP 请求和隐秘无头浏览器在同一个 Spider 中使用——通过 ID 将请求路由到不同的 Session。
+- 💾 **暂停与恢复**:基于 Checkpoint 的爬取持久化。按 Ctrl+C 优雅关闭;重启后从上次停止的地方继续。
+- 📡 **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的高级网站获取
-- **HTTP请求**:使用`Fetcher`类进行快速和隐秘的HTTP请求。可以模拟浏览器的TLS fingerprint、标头并使用HTTP/3。
-- **动态加载**:通过`DynamicFetcher`类使用完整的浏览器自动化获取动态网站,支持Playwright的Chromium和Google Chrome。
-- **反机器人绕过**:使用`StealthyFetcher`的高级隐秘功能和fingerprint伪装。可以轻松自动绕过所有类型的Cloudflare Turnstile/Interstitial。
-- **Session管理**:使用`FetcherSession`、`StealthySession`和`DynamicSession`类实现持久化Session支持,用于跨请求的cookie和状态管理。
-- **Proxy轮换**:内置`ProxyRotator`,支持轮询或自定义策略,适用于所有Session类型,并支持按请求覆盖Proxy。
-- **域名屏蔽**:在基于浏览器的Fetcher中屏蔽对特定域名(及其子域名)的请求。
-- **Async支持**:所有Fetcher和专用async Session类的完整async支持。
+### 支持 Session 的高级网站获取
+- **HTTP 请求**:使用 `Fetcher` 类进行快速和隐秘的 HTTP 请求。可以模拟浏览器的 TLS fingerprint、标头并使用 HTTP/3。
+- **动态加载**:通过 `DynamicFetcher` 类使用完整的浏览器自动化获取动态网站,支持 Playwright 的 Chromium 和 Google Chrome。
+- **反机器人绕过**:使用 `StealthyFetcher` 的高级隐秘功能和 fingerprint 伪装。可以轻松自动绕过所有类型的 Cloudflare Turnstile/Interstitial。
+- **Session 管理**:使用 `FetcherSession`、`StealthySession` 和 `DynamicSession` 类实现持久化 Session 支持,用于跨请求的 cookie 和状态管理。
+- **Proxy 轮换**:内置 `ProxyRotator`,支持轮询或自定义策略,适用于所有 Session 类型,并支持按请求覆盖 Proxy。
+- **域名屏蔽**:在基于浏览器的 Fetcher 中屏蔽对特定域名(及其子域名)的请求。
+- **Async 支持**:所有 Fetcher 和专用 async Session 类的完整 async 支持。
-### 自适应抓取和AI集成
+### 自适应抓取和 AI 集成
- 🔄 **智能元素跟踪**:使用智能相似性算法在网站更改后重新定位元素。
-- 🎯 **智能灵活选择**:CSS选择器、XPath选择器、基于过滤器的搜索、文本搜索、正则表达式搜索等。
+- 🎯 **智能灵活选择**:CSS 选择器、XPath 选择器、基于过滤器的搜索、文本搜索、正则表达式搜索等。
- 🔍 **查找相似元素**:自动定位与已找到元素相似的元素。
-- 🤖 **与AI一起使用的MCP服务器**:内置MCP服务器用于AI辅助Web Scraping和数据提取。MCP服务器具有强大的自定义功能,利用Scrapling在将内容传递给AI(Claude/Cursor等)之前提取目标内容,从而加快操作并通过最小化token使用来降低成本。([演示视频](https://www.youtube.com/watch?v=qyFk3ZNwOxE))
+- 🤖 **与 AI 一起使用的 MCP 服务器**:内置 MCP 服务器用于 AI 辅助 Web Scraping 和数据提取。MCP 服务器具有强大的自定义功能,利用 Scrapling 在将内容传递给 AI(Claude/Cursor 等)之前提取目标内容,从而加快操作并通过最小化 token 使用来降低成本。([演示视频](https://www.youtube.com/watch?v=qyFk3ZNwOxE))
### 高性能和经过实战测试的架构
-- 🚀 **闪电般快速**:优化性能超越大多数Python抓取库。
+- 🚀 **闪电般快速**:优化性能超越大多数 Python 抓取库。
- 🔋 **内存高效**:优化的数据结构和延迟加载,最小内存占用。
-- ⚡ **快速JSON序列化**:比标准库快10倍。
-- 🏗️ **经过实战测试**:Scrapling不仅拥有92%的测试覆盖率和完整的类型提示覆盖率,而且在过去一年中每天被数百名Web Scraper使用。
+- ⚡ **快速 JSON 序列化**:比标准库快 10 倍。
+- 🏗️ **经过实战测试**:Scrapling 不仅拥有 92% 的测试覆盖率和完整的类型提示覆盖率,而且在过去一年中每天被数百名 Web Scraper 使用。
-### 对开发者/Web Scraper友好的体验
-- 🎯 **交互式Web Scraping Shell**:可选的内置IPython Shell,具有Scrapling集成、快捷方式和新工具,可加快Web Scraping脚本开发,例如将curl请求转换为Scrapling请求并在浏览器中查看请求结果。
-- 🚀 **直接从终端使用**:可选地,您可以使用Scrapling抓取URL而无需编写任何代码!
-- 🛠️ **丰富的导航API**:使用父级、兄弟级和子级导航方法进行高级DOM遍历。
+### 对开发者/Web Scraper 友好的体验
+- 🎯 **交互式 Web Scraping Shell**:可选的内置 IPython Shell,具有 Scrapling 集成、快捷方式和新工具,可加快 Web Scraping 脚本开发,例如将 curl 请求转换为 Scrapling 请求并在浏览器中查看请求结果。
+- 🚀 **直接从终端使用**:可选地,您可以使用 Scrapling 抓取 URL 而无需编写任何代码!
+- 🛠️ **丰富的导航 API**:使用父级、兄弟级和子级导航方法进行高级 DOM 遍历。
- 🧬 **增强的文本处理**:内置正则表达式、清理方法和优化的字符串操作。
-- 📝 **自动选择器生成**:为任何元素生成强大的CSS/XPath选择器。
-- 🔌 **熟悉的API**:类似于Scrapy/BeautifulSoup,使用与Scrapy/Parsel相同的伪元素。
-- 📘 **完整的类型覆盖**:完整的类型提示,出色的IDE支持和代码补全。整个代码库在每次更改时都会自动使用**PyRight**和**MyPy**扫描。
-- 🔋 **现成的Docker镜像**:每次发布时,包含所有浏览器的Docker镜像会自动构建和推送。
+- 📝 **自动选择器生成**:为任何元素生成强大的 CSS/XPath 选择器。
+- 🔌 **熟悉的 API**:类似于 Scrapy/BeautifulSoup,使用与 Scrapy/Parsel 相同的伪元素。
+- 📘 **完整的类型覆盖**:完整的类型提示,出色的 IDE 支持和代码补全。整个代码库在每次更改时都会自动使用**PyRight**和**MyPy**扫描。
+- 🔋 **现成的 Docker 镜像**:每次发布时,包含所有浏览器的 Docker 镜像会自动构建和推送。
## 入门
-让我们快速展示Scrapling的功能,无需深入了解。
+让我们快速展示 Scrapling 的功能,无需深入了解。
### 基本用法
-支持Session的HTTP请求
+支持 Session 的 HTTP 请求
```python
from scrapling.fetchers import Fetcher, FetcherSession
-with FetcherSession(impersonate='chrome') as session: # 使用Chrome的最新版本TLS fingerprint
+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()
@@ -256,7 +266,7 @@ 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选择器
+ data = page.xpath('//span[@class="text"]/text()').getall() # 如果您偏好 XPath 选择器
# 或使用一次性请求样式,为此请求打开浏览器,完成后关闭
page = DynamicFetcher.fetch('https://quotes.toscrape.com/')
@@ -264,7 +274,7 @@ data = page.css('.quote .text::text').getall()
```
### Spider
-构建具有并发请求、多种Session类型和暂停/恢复功能的完整爬虫:
+构建具有并发请求、多种 Session 类型和暂停/恢复功能的完整爬虫:
```python
from scrapling.spiders import Spider, Request, Response
@@ -288,7 +298,7 @@ result = QuotesSpider().start()
print(f"抓取了 {len(result.items)} 条引用")
result.items.to_json("quotes.json")
```
-在单个Spider中使用多种Session类型:
+在单个 Spider 中使用多种 Session 类型:
```python
from scrapling.spiders import Spider, Request, Response
from scrapling.fetchers import FetcherSession, AsyncStealthySession
@@ -303,17 +313,17 @@ class MultiSessionSpider(Spider):
async def parse(self, response: Response):
for link in response.css('a::attr(href)').getall():
- # 将受保护的页面路由到隐秘Session
+ # 将受保护的页面路由到隐秘 Session
if "protected" in link:
yield Request(link, sid="stealth")
else:
- yield Request(link, sid="fast", callback=self.parse) # 显式callback
+ yield Request(link, sid="fast", callback=self.parse) # 显式 callback
```
-通过如下方式运行Spider来暂停和恢复长时间爬取,使用Checkpoint:
+通过如下方式运行 Spider 来暂停和恢复长时间爬取,使用 Checkpoint:
```python
QuotesSpider(crawldir="./crawl_data").start()
```
-按Ctrl+C优雅暂停——进度会自动保存。之后,当您再次启动Spider时,传递相同的`crawldir`,它将从上次停止的地方继续。
+按 Ctrl+C 优雅暂停——进度会自动保存。之后,当您再次启动 Spider 时,传递相同的 `crawldir`,它将从上次停止的地方继续。
### 高级解析与导航
```python
@@ -323,9 +333,9 @@ from scrapling.fetchers import Fetcher
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.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')
@@ -352,16 +362,16 @@ page = Selector("...")
```
用法完全相同!
-### Async Session管理示例
+### Async Session 管理示例
```python
import asyncio
from scrapling.fetchers import FetcherSession, AsyncStealthySession, AsyncDynamicSession
-async with FetcherSession(http3=True) as session: # `FetcherSession`是上下文感知的,可以在sync/async模式下工作
+async with FetcherSession(http3=True) as session: # `FetcherSession`是上下文感知的,可以在 sync/async 模式下工作
page1 = session.get('https://quotes.toscrape.com/')
page2 = session.get('https://quotes.toscrape.com/', impersonate='firefox135')
-# Async Session用法
+# Async Session 用法
async with AsyncStealthySession(max_pages=2) as session:
tasks = []
urls = ['https://example.com/page1', 'https://example.com/page2']
@@ -375,34 +385,34 @@ async with AsyncStealthySession(max_pages=2) as session:
print(session.get_pool_stats())
```
-## CLI和交互式Shell
+## CLI 和交互式 Shell
-Scrapling包含强大的命令行界面:
+Scrapling 包含强大的命令行界面:
[](https://asciinema.org/a/736339)
-启动交互式Web Scraping Shell
+启动交互式 Web Scraping Shell
```bash
scrapling shell
```
-直接将页面提取到文件而无需编程(默认提取`body`标签内的内容)。如果输出文件以`.txt`结尾,则将提取目标的文本内容。如果以`.md`结尾,它将是HTML内容的Markdown表示;如果以`.html`结尾,它将是HTML内容本身。
+直接将页面提取到文件而无需编程(默认提取 `body` 标签内的内容)。如果输出文件以`.txt` 结尾,则将提取目标的文本内容。如果以`.md` 结尾,它将是 HTML 内容的 Markdown 表示;如果以`.html` 结尾,它将是 HTML 内容本身。
```bash
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 stealthy-fetch 'https://nopecha.com/demo/cloudflare' captchas.html --css-selector '#padded_content a' --solve-cloudflare
```
> [!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 |
| 2 | Parsel/Scrapy | 2.04 | 1.01 |
@@ -416,29 +426,29 @@ Scrapling不仅功能强大——它还速度极快。以下基准测试将Scrap
### 元素相似性和文本搜索性能
-Scrapling的自适应元素查找功能明显优于替代方案:
+Scrapling 的自适应元素查找功能明显优于替代方案:
-| 库 | 时间(ms) | vs Scrapling |
+| 库 | 时间 (ms) | vs Scrapling |
|-------------|:---------:|:------------:|
| Scrapling | 2.39 | 1.0x |
| 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
pip install scrapling
```
-此安装仅包括解析器引擎及其依赖项,没有任何Fetcher或命令行依赖项。
+此安装仅包括解析器引擎及其依赖项,没有任何 Fetcher 或命令行依赖项。
### 可选依赖项
-1. 如果您要使用以下任何额外功能、Fetcher或它们的类,您将需要安装Fetcher的依赖项和它们的浏览器依赖项,如下所示:
+1. 如果您要使用以下任何额外功能、Fetcher 或它们的类,您将需要安装 Fetcher 的依赖项和它们的浏览器依赖项,如下所示:
```bash
pip install "scrapling[fetchers]"
@@ -446,7 +456,7 @@ pip install scrapling
scrapling install --force # force reinstall
```
- 这会下载所有浏览器,以及它们的系统依赖项和fingerprint操作依赖项。
+ 这会下载所有浏览器,以及它们的系统依赖项和 fingerprint 操作依赖项。
或者你可以从代码中安装,而不是运行命令:
```python
@@ -457,11 +467,11 @@ pip install scrapling
```
2. 额外功能:
- - 安装MCP服务器功能:
+ - 安装 MCP 服务器功能:
```bash
pip install "scrapling[ai]"
```
- - 安装Shell功能(Web Scraping Shell和`extract`命令):
+ - 安装 Shell 功能(Web Scraping Shell 和 `extract` 命令):
```bash
pip install "scrapling[shell]"
```
@@ -469,27 +479,27 @@ pip install scrapling
```bash
pip install "scrapling[all]"
```
- 请记住,在安装任何这些额外功能后(如果您还没有安装),您需要使用`scrapling install`安装浏览器依赖项
+ 请记住,在安装任何这些额外功能后(如果您还没有安装),您需要使用 `scrapling install` 安装浏览器依赖项
### Docker
-您还可以使用以下命令从DockerHub安装包含所有额外功能和浏览器的Docker镜像:
+您还可以使用以下命令从 DockerHub 安装包含所有额外功能和浏览器的 Docker 镜像:
```bash
docker pull pyd4vinci/scrapling
```
-或从GitHub注册表下载:
+或从 GitHub 注册表下载:
```bash
docker pull ghcr.io/d4vinci/scrapling:latest
```
-此镜像使用GitHub Actions和仓库主分支自动构建和推送。
+此镜像使用 GitHub Actions 和仓库主分支自动构建和推送。
## 贡献
-我们欢迎贡献!在开始之前,请阅读我们的[贡献指南](https://github.com/D4Vinci/Scrapling/blob/main/CONTRIBUTING.md)。
+我们欢迎贡献!在开始之前,请阅读我们的 [贡献指南](https://github.com/D4Vinci/Scrapling/blob/main/CONTRIBUTING.md)。
## 免责声明
> [!CAUTION]
-> 此库仅用于教育和研究目的。使用此库即表示您同意遵守本地和国际数据抓取和隐私法律。作者和贡献者对本软件的任何滥用不承担责任。始终尊重网站的服务条款和robots.txt文件。
+> 此库仅用于教育和研究目的。使用此库即表示您同意遵守本地和国际数据抓取和隐私法律。作者和贡献者对本软件的任何滥用不承担责任。始终尊重网站的服务条款和 robots.txt 文件。
## 🎓 引用
如果您将我们的库用于研究目的,请使用以下参考文献引用我们:
@@ -505,12 +515,12 @@ docker pull ghcr.io/d4vinci/scrapling:latest
## 许可证
-本作品根据BSD-3-Clause许可证授权。
+本作品根据 BSD-3-Clause 许可证授权。
## 致谢
此项目包含改编自以下内容的代码:
-- Parsel(BSD许可证)——用于[translator](https://github.com/D4Vinci/Scrapling/blob/main/scrapling/core/translator.py)子模块
+- Parsel(BSD 许可证)——用于 [translator](https://github.com/D4Vinci/Scrapling/blob/main/scrapling/core/translator.py)子模块
---
-由Karim Shoair用❤️设计和制作。
+由 Karim Shoair 用❤️设计和制作。
diff --git a/docs/README_DE.md b/docs/README_DE.md
index e853726..88ebd0a 100644
--- a/docs/README_DE.md
+++ b/docs/README_DE.md
@@ -34,17 +34,17 @@
- Auswahlmethoden
+ Auswahlmethoden
·
- Einen Fetcher wählen
+ Einen Fetcher wählen
·
Spiders
·
Proxy-Rotation
·
- CLI
+ CLI
·
- MCP-Modus
+ MCP-Modus
Scrapling ist ein adaptives Web-Scraping-Framework, das alles abdeckt -- von einer einzelnen Anfrage bis hin zu einem umfassenden Crawl.
@@ -159,6 +159,16 @@ MySpider().start()
Lesen Sie eine vollständige Rezension von Scrapling auf The Web Scraping Club (Nov. 2025), dem führenden Newsletter für Web Scraping.
+
+
+
+
+
+ |
+
+ Proxy-Seller bietet zuverlässige Proxy-Infrastruktur für Web Scraping mit IPv4-, IPv6-, ISP-, Residential- und Mobile-Proxys – stabile Leistung, breite geografische Abdeckung und flexible Tarife für die Datenerfassung im Unternehmensmaßstab.
+ |
+
Möchten Sie Ihre Anzeige hier zeigen? Klicken Sie [hier](https://github.com/sponsors/D4Vinci/sponsorships?tier_id=586646)
diff --git a/docs/README_ES.md b/docs/README_ES.md
index 3405328..959bc05 100644
--- a/docs/README_ES.md
+++ b/docs/README_ES.md
@@ -34,17 +34,17 @@
- Métodos de selección
+ Métodos de selección
·
- Elegir un fetcher
+ Elegir un fetcher
·
Spiders
·
Rotación de proxy
·
- CLI
+ CLI
·
- Modo MCP
+ Modo MCP
Scrapling es un framework de Web Scraping adaptativo que se encarga de todo, desde una sola solicitud hasta un rastreo a gran escala.
@@ -159,6 +159,16 @@ MySpider().start()
Lee una reseña completa de Scrapling en The Web Scraping Club (nov. 2025), el boletín número uno dedicado al Web Scraping.
+
+
+
+
+
+ |
+
+ Proxy-Seller ofrece una infraestructura de proxy fiable para web scraping, con proxies IPv4, IPv6, ISP, residenciales y móviles con rendimiento estable, amplia cobertura geográfica y planes flexibles para la recopilación de datos a escala empresarial.
+ |
+
¿Quieres mostrar tu anuncio aquí? Haz clic [aquí](https://github.com/sponsors/D4Vinci/sponsorships?tier_id=586646)
diff --git a/docs/README_FR.md b/docs/README_FR.md
index 8250592..9d4212a 100644
--- a/docs/README_FR.md
+++ b/docs/README_FR.md
@@ -34,17 +34,17 @@
- Méthodes de sélection
+ Méthodes de sélection
·
- Fetchers
+ Fetchers
·
Spiders
·
Rotation de proxy
·
- CLI
+ CLI
·
- MCP
+ MCP
Scrapling est un framework de Web Scraping adaptatif qui gère tout, d'une simple requête à un crawl à grande échelle.
@@ -159,6 +159,16 @@ MySpider().start()
Lisez une critique complète de Scrapling sur The Web Scraping Club (nov. 2025), la newsletter n°1 dédiée au Web Scraping.
+
+
+
+
+
+ |
+
+ Proxy-Seller fournit une infrastructure proxy fiable pour le web scraping, avec des proxys IPv4, IPv6, ISP, résidentiels et mobiles offrant des performances stables, une large couverture géographique et des plans flexibles pour la collecte de données à l'échelle entreprise.
+ |
+
Vous souhaitez afficher votre publicité ici ? Cliquez [ici](https://github.com/sponsors/D4Vinci/sponsorships?tier_id=586646)
diff --git a/docs/README_JP.md b/docs/README_JP.md
index e393859..dde6f5b 100644
--- a/docs/README_JP.md
+++ b/docs/README_JP.md
@@ -34,24 +34,24 @@
- 選択メソッド
+ 選択メソッド
·
- Fetcherの選び方
+ Fetcher の選び方
·
スパイダー
·
プロキシローテーション
·
- CLI
+ CLI
·
- MCPモード
+ MCP モード
-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
from scrapling.fetchers import Fetcher, AsyncFetcher, StealthyFetcher, DynamicFetcher
@@ -89,9 +89,9 @@ MySpider().start()
- ScraplingはCloudflare Turnstileに対応。エンタープライズレベルの保護には、
+ | Scrapling は Cloudflare Turnstile に対応。エンタープライズレベルの保護には、
Hyper Solutions
- がAkamai、DataDome、Kasada、Incapsula向けの有効なantibotトークンを生成するAPIエンドポイントを提供。シンプルなAPI呼び出しで、ブラウザ自動化不要。 |
+ がAkamai、DataDome、Kasada、Incapsula向けの有効な antibot トークンを生成する API エンドポイントを提供。シンプルな API 呼び出しで、ブラウザ自動化不要。
|
@@ -102,7 +102,7 @@ MySpider().start()
| プロキシは複雑で高価であるべきではないと考え、
BirdProxies
を構築しました。 195以上のロケーションの高速レジデンシャル・ISPプロキシ、公正な価格設定、そして本物のサポート。
- ランディングページでFlappyBirdゲームを試して無料データをゲット!
+ ランディングページでFlappyBird ゲームを試して無料データをゲット!
|
@@ -146,7 +146,7 @@ MySpider().start()
ノートパソコンを閉じても、スクレイパーは動き続けます。
- PetroSky VPS - ノンストップ自動化のために構築されたクラウドサーバー。WindowsとLinuxマシンを完全制御。月額€6.99から。
+ PetroSky VPS - ノンストップ自動化のために構築されたクラウドサーバー。Windows と Linux マシンを完全制御。月額 €6.99 から。
|
@@ -156,7 +156,17 @@ MySpider().start()
|
- The Web Scraping ClubでScraplingの詳細レビュー(2025年11月)をお読みください。Webスクレイピング専門のNo.1ニュースレターです。
+ The Web Scraping Club で Scrapling の詳細レビュー(2025年11月)をお読みください。Web スクレイピング専門の No.1 ニュースレターです。
+ |
+
+
+
+
+
+
+ |
+
+ Proxy-Seller は Web スクレイピング向けの信頼性の高いプロキシインフラを提供しています。IPv4、IPv6、ISP、レジデンシャル、モバイルプロキシに対応し、安定したパフォーマンス、幅広い地理的カバレッジ、企業規模のデータ収集に柔軟なプランを備えています。
|
@@ -182,55 +192,55 @@ MySpider().start()
## 主な機能
### 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にリクエストをルーティング。
-- 💾 **Pause & Resume**:Checkpointベースのクロール永続化。Ctrl+Cで正常にシャットダウン;再起動すると中断したところから再開。
-- 📡 **Streamingモード**:`async for item in spider.stream()`でリアルタイム統計とともにスクレイプされたアイテムをStreamingで受信 — UI、パイプライン、長時間実行クロールに最適。
+- 🔄 **マルチ 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()`を使用。
+- 📦 **組み込みエクスポート**:フックや独自のパイプライン、または組み込みの 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および専用asyncSessionクラス全体での完全なasyncサポート。
+### 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統合
+### 適応型スクレイピングと AI 統合
- 🔄 **スマート要素追跡**:インテリジェントな類似性アルゴリズムを使用してウェブサイトの変更後に要素を再配置。
-- 🎯 **スマート柔軟選択**:CSSセレクタ、XPathセレクタ、フィルタベース検索、テキスト検索、正規表現検索など。
+- 🎯 **スマート柔軟選択**:CSS セレクタ、XPath セレクタ、フィルタベース検索、テキスト検索、正規表現検索など。
- 🔍 **類似要素の検出**:見つかった要素に類似した要素を自動的に特定。
-- 🤖 **AIと使用するMCPサーバー**:AI支援Web Scrapingとデータ抽出のための組み込みMCPサーバー。MCPサーバーは、AI(Claude/Cursorなど)に渡す前にScraplingを活用してターゲットコンテンツを抽出する強力でカスタムな機能を備えており、操作を高速化し、トークン使用量を最小限に抑えることでコストを削減します。([デモ動画](https://www.youtube.com/watch?v=qyFk3ZNwOxE))
+- 🤖 **AI と使用する MCP サーバー**:AI 支援 Web Scraping とデータ抽出のための組み込み MCP サーバー。MCP サーバーは、AI(Claude/Cursor など)に渡す前に Scrapling を活用してターゲットコンテンツを抽出する強力でカスタムな機能を備えており、操作を高速化し、トークン使用量を最小限に抑えることでコストを削減します。([デモ動画](https://www.youtube.com/watch?v=qyFk3ZNwOxE))
### 高性能で実戦テスト済みのアーキテクチャ
-- 🚀 **超高速**:ほとんどのPythonスクレイピングライブラリを上回る最適化されたパフォーマンス。
+- 🚀 **超高速**:ほとんどの Python スクレイピングライブラリを上回る最適化されたパフォーマンス。
- 🔋 **メモリ効率**:最小のメモリフットプリントのための最適化されたデータ構造と遅延読み込み。
-- ⚡ **高速JSONシリアル化**:標準ライブラリの10倍の速度。
-- 🏗️ **実戦テスト済み**:Scraplingは92%のテストカバレッジと完全な型ヒントカバレッジを備えているだけでなく、過去1年間に数百人のWeb Scraperによって毎日使用されてきました。
+- ⚡ **高速 JSON シリアル化**:標準ライブラリの 10 倍の速度。
+- 🏗️ **実戦テスト済み**:Scrapling は 92% のテストカバレッジと完全な型ヒントカバレッジを備えているだけでなく、過去1年間に数百人の Web Scraper によって毎日使用されてきました。
-### 開発者/Web Scraperにやさしい体験
-- 🎯 **インタラクティブWeb Scraping Shell**:Scrapling統合、ショートカット、curlリクエストをScraplingリクエストに変換したり、ブラウザでリクエスト結果を表示したりするなどの新しいツールを備えたオプションの組み込みIPython Shellで、Web Scrapingスクリプトの開発を加速。
-- 🚀 **ターミナルから直接使用**:オプションで、コードを一行も書かずにScraplingを使用してURLをスクレイプできます!
-- 🛠️ **豊富なナビゲーションAPI**:親、兄弟、子のナビゲーションメソッドによる高度なDOMトラバーサル。
+### 開発者/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イメージが自動的にビルドおよびプッシュされます。
+- 📝 **自動セレクタ生成**:任意の要素に対して堅牢な CSS/XPath セレクタを生成。
+- 🔌 **馴染みのある API**:Scrapy/Parsel で使用されている同じ疑似要素を持つ Scrapy/BeautifulSoup に似た設計。
+- 📘 **完全な型カバレッジ**:優れた IDE サポートとコード補完のための完全な型ヒント。コードベース全体が変更のたびに**PyRight**と**MyPy**で自動的にスキャンされます。
+- 🔋 **すぐに使える Docker イメージ**:各リリースで、すべてのブラウザを含む Docker イメージが自動的にビルドおよびプッシュされます。
## はじめに
-深く掘り下げずに、Scraplingにできることの簡単な概要をお見せしましょう。
+深く掘り下げずに、Scrapling にできることの簡単な概要をお見せしましょう。
### 基本的な使い方
-Sessionサポート付きHTTPリクエスト
+Session サポート付き HTTP リクエスト
```python
from scrapling.fetchers import Fetcher, FetcherSession
-with FetcherSession(impersonate='chrome') as session: # ChromeのTLS fingerprintの最新バージョンを使用
+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()
@@ -256,7 +266,7 @@ 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セレクタを使用
+ data = page.xpath('//span[@class="text"]/text()').getall() # お好みであれば XPath セレクタを使用
# または一回限りのリクエストスタイル、このリクエストのためにブラウザを開き、完了後に閉じる
page = DynamicFetcher.fetch('https://quotes.toscrape.com/')
@@ -264,7 +274,7 @@ data = page.css('.quote .text::text').getall()
```
### Spider
-並行リクエスト、複数のSessionタイプ、Pause & Resumeを備えた本格的なクローラーを構築:
+並行リクエスト、複数の Session タイプ、Pause & Resume を備えた本格的なクローラーを構築:
```python
from scrapling.spiders import Spider, Request, Response
@@ -288,7 +298,7 @@ result = QuotesSpider().start()
print(f"{len(result.items)}件の引用をスクレイプしました")
result.items.to_json("quotes.json")
```
-単一のSpiderで複数のSessionタイプを使用:
+単一の Spider で複数の Session タイプを使用:
```python
from scrapling.spiders import Spider, Request, Response
from scrapling.fetchers import FetcherSession, AsyncStealthySession
@@ -303,17 +313,17 @@ class MultiSessionSpider(Spider):
async def parse(self, response: Response):
for link in response.css('a::attr(href)').getall():
- # 保護されたページはステルスSessionを通してルーティング
+ # 保護されたページはステルス Session を通してルーティング
if "protected" in link:
yield Request(link, sid="stealth")
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
QuotesSpider(crawldir="./crawl_data").start()
```
-Ctrl+Cを押すと正常に一時停止し、進捗は自動的に保存されます。後でSpiderを再度起動する際に同じ`crawldir`を渡すと、中断したところから再開します。
+Ctrl+C を押すと正常に一時停止し、進捗は自動的に保存されます。後で Spider を再度起動する際に同じ`crawldir`を渡すと、中断したところから再開します。
### 高度なパースとナビゲーション
```python
@@ -323,9 +333,9 @@ from scrapling.fetchers import Fetcher
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.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')
@@ -352,16 +362,16 @@ page = Selector("...")
```
まったく同じ方法で動作します!
-### 非同期Session管理の例
+### 非同期 Session 管理の例
```python
import asyncio
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/')
page2 = session.get('https://quotes.toscrape.com/', impersonate='firefox135')
-# 非同期Sessionの使用
+# 非同期 Session の使用
async with AsyncStealthySession(max_pages=2) as session:
tasks = []
urls = ['https://example.com/page1', 'https://example.com/page2']
@@ -375,34 +385,34 @@ async with AsyncStealthySession(max_pages=2) as session:
print(session.get_pool_stats())
```
-## CLIとインタラクティブShell
+## CLI とインタラクティブ Shell
-Scraplingには強力なコマンドラインインターフェースが含まれています:
+Scrapling には強力なコマンドラインインターフェースが含まれています:
[](https://asciinema.org/a/736339)
-インタラクティブWeb Scraping Shellを起動
+インタラクティブ Web Scraping Shell を起動
```bash
scrapling shell
```
-プログラミングせずに直接ページをファイルに抽出(デフォルトで`body`タグ内のコンテンツを抽出)。出力ファイルが`.txt`で終わる場合、ターゲットのテキストコンテンツが抽出されます。`.md`で終わる場合、HTMLコンテンツのMarkdown表現になります。`.html`で終わる場合、HTMLコンテンツそのものになります。
+プログラミングせずに直接ページをファイルに抽出(デフォルトで`body`タグ内のコンテンツを抽出)。出力ファイルが`.txt`で終わる場合、ターゲットのテキストコンテンツが抽出されます。`.md`で終わる場合、HTML コンテンツの Markdown 表現になります。`.html` で終わる場合、HTML コンテンツそのものになります。
```bash
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 stealthy-fetch 'https://nopecha.com/demo/cloudflare' captchas.html --css-selector '#padded_content a' --solve-cloudflare
```
> [!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 |
| 2 | Parsel/Scrapy | 2.04 | 1.01 |
@@ -416,29 +426,29 @@ Scraplingは強力であるだけでなく、超高速です。以下のベン
### 要素類似性とテキスト検索のパフォーマンス
-Scraplingの適応型要素検索機能は代替手段を大幅に上回ります:
+Scrapling の適応型要素検索機能は代替手段を大幅に上回ります:
-| ライブラリ | 時間(ms) | vs Scrapling |
+| ライブラリ | 時間 (ms) | vs Scrapling |
|-------------|:---------:|:------------:|
| Scrapling | 2.39 | 1.0x |
| 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
pip install scrapling
```
-このインストールにはパーサーエンジンとその依存関係のみが含まれており、Fetcherやコマンドライン依存関係は含まれていません。
+このインストールにはパーサーエンジンとその依存関係のみが含まれており、Fetcher やコマンドライン依存関係は含まれていません。
### オプションの依存関係
-1. 以下の追加機能、Fetcher、またはそれらのクラスのいずれかを使用する場合は、Fetcherの依存関係とブラウザの依存関係を次のようにインストールする必要があります:
+1. 以下の追加機能、Fetcher、またはそれらのクラスのいずれかを使用する場合は、Fetcher の依存関係とブラウザの依存関係を次のようにインストールする必要があります:
```bash
pip install "scrapling[fetchers]"
@@ -446,7 +456,7 @@ pip install scrapling
scrapling install --force # force reinstall
```
- これにより、すべてのブラウザ、およびそれらのシステム依存関係とfingerprint操作依存関係がダウンロードされます。
+ これにより、すべてのブラウザ、およびそれらのシステム依存関係とfingerprint 操作依存関係がダウンロードされます。
または、コマンドを実行する代わりにコードからインストールすることもできます:
```python
@@ -457,11 +467,11 @@ pip install scrapling
```
2. 追加機能:
- - MCPサーバー機能をインストール:
+ - MCP サーバー機能をインストール:
```bash
pip install "scrapling[ai]"
```
- - Shell機能(Web Scraping Shellと`extract`コマンド)をインストール:
+ - Shell 機能(Web Scraping Shell と`extract`コマンド)をインストール:
```bash
pip install "scrapling[shell]"
```
@@ -472,15 +482,15 @@ pip install scrapling
これらの追加機能のいずれかの後(まだインストールしていない場合)、`scrapling install`でブラウザの依存関係をインストールする必要があることを忘れないでください
### Docker
-DockerHubから次のコマンドですべての追加機能とブラウザを含むDockerイメージをインストールすることもできます:
+DockerHub から次のコマンドですべての追加機能とブラウザを含む Docker イメージをインストールすることもできます:
```bash
docker pull pyd4vinci/scrapling
```
-またはGitHubレジストリからダウンロード:
+または GitHub レジストリからダウンロード:
```bash
docker pull ghcr.io/d4vinci/scrapling:latest
```
-このイメージは、GitHub Actionsとリポジトリのメインブランチを使用して自動的にビルドおよびプッシュされます。
+このイメージは、GitHub Actions とリポジトリのメインブランチを使用して自動的にビルドおよびプッシュされます。
## 貢献
@@ -489,7 +499,7 @@ docker pull ghcr.io/d4vinci/scrapling:latest
## 免責事項
> [!CAUTION]
-> このライブラリは教育および研究目的のみで提供されています。このライブラリを使用することにより、地域および国際的なデータスクレイピングおよびプライバシー法に準拠することに同意したものとみなされます。著者および貢献者は、このソフトウェアの誤用について責任を負いません。常にウェブサイトの利用規約とrobots.txtファイルを尊重してください。
+> このライブラリは教育および研究目的のみで提供されています。このライブラリを使用することにより、地域および国際的なデータスクレイピングおよびプライバシー法に準拠することに同意したものとみなされます。著者および貢献者は、このソフトウェアの誤用について責任を負いません。常にウェブサイトの利用規約とrobots.txt ファイルを尊重してください。
## 🎓 引用
研究目的で当ライブラリを使用された場合は、以下の参考文献で引用してください:
@@ -505,12 +515,12 @@ docker pull ghcr.io/d4vinci/scrapling:latest
## ライセンス
-この作品はBSD-3-Clauseライセンスの下でライセンスされています。
+この作品は BSD-3-Clause ライセンスの下でライセンスされています。
## 謝辞
このプロジェクトには次から適応されたコードが含まれています:
-- Parsel(BSDライセンス)— [translator](https://github.com/D4Vinci/Scrapling/blob/main/scrapling/core/translator.py)サブモジュールに使用
+- Parsel(BSD ライセンス)— [translator](https://github.com/D4Vinci/Scrapling/blob/main/scrapling/core/translator.py) サブモジュールに使用
---
-Karim Shoairによって❤️でデザインおよび作成されました。
+Karim Shoair によって❤️でデザインおよび作成されました。
diff --git a/docs/README_KR.md b/docs/README_KR.md
index 122c115..dad94ae 100644
--- a/docs/README_KR.md
+++ b/docs/README_KR.md
@@ -34,17 +34,17 @@
- 선택 메서드
+ 선택 메서드
·
- Fetcher 선택 가이드
+ Fetcher 선택 가이드
·
Spider
·
프록시 로테이션
·
- CLI
+ CLI
·
- MCP 서버
+ MCP 서버
Scrapling은 단일 요청부터 대규모 크롤링까지 모든 것을 처리하는 적응형 Web Scraping 프레임워크입니다.
@@ -159,6 +159,16 @@ MySpider().start()
The Web Scraping Club에서 Scrapling의 전체 리뷰(2025년 11월)를 읽어보세요. 웹 스크래핑 전문 No.1 뉴스레터입니다.
+
+
+
+
+
+ |
+
+ Proxy-Seller는 웹 스크래핑을 위한 안정적인 프록시 인프라를 제공합니다. IPv4, IPv6, ISP, 주거용 및 모바일 프록시를 지원하며, 안정적인 성능, 광범위한 지역 커버리지, 기업 규모의 데이터 수집을 위한 유연한 요금제를 갖추고 있습니다.
+ |
+
여기에 광고를 게재하고 싶으신가요? [여기](https://github.com/sponsors/D4Vinci/sponsorships?tier_id=586646)를 클릭하세요
diff --git a/docs/README_RU.md b/docs/README_RU.md
index 2316672..99b347a 100644
--- a/docs/README_RU.md
+++ b/docs/README_RU.md
@@ -34,17 +34,17 @@
- Методы выбора
+ Методы выбора
·
- Выбор Fetcher
+ Выбор Fetcher
·
Пауки
·
Ротация прокси
·
- CLI
+ CLI
·
- Режим MCP
+ Режим MCP
Scrapling — это адаптивный фреймворк для Web Scraping, который берёт на себя всё: от одного запроса до полномасштабного обхода сайтов.
@@ -162,6 +162,16 @@ MySpider().start()
Прочитайте полный обзор Scrapling на The Web Scraping Club (ноябрь 2025) — рассылка №1, посвящённая веб-скрейпингу.
+
+
+
+
+
+ |
+
+ Proxy-Seller предоставляет надёжную прокси-инфраструктуру для веб-скрейпинга: IPv4, IPv6, ISP, резидентные и мобильные прокси со стабильной производительностью, широким географическим покрытием и гибкими тарифами для сбора данных в масштабах бизнеса.
+ |
+
Хотите показать здесь свою рекламу? Нажмите [здесь](https://github.com/sponsors/D4Vinci/sponsorships?tier_id=586646)
diff --git a/docs/index.md b/docs/index.md
index a779b6c..be8670b 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -46,16 +46,42 @@ MySpider().start()
## Top Sponsors
+
+
diff --git a/docs/requirements.txt b/docs/requirements.txt
index 3495486..7e8e342 100644
--- a/docs/requirements.txt
+++ b/docs/requirements.txt
@@ -1,4 +1,4 @@
-zensical>=0.0.24
+zensical>=0.0.27
mkdocstrings>=1.0.3
mkdocstrings-python>=2.0.3
griffe-inherited-docstrings>=1.1.3
diff --git a/docs/tutorials/replacing_ai.md b/docs/tutorials/replacing_ai.md
index 200073c..f752a2d 100644
--- a/docs/tutorials/replacing_ai.md
+++ b/docs/tutorials/replacing_ai.md
@@ -39,30 +39,30 @@ Unless money is irrelevant to you, you will try to find less expensive approache
Scrapling can handle almost all issues you will face during Web Scraping, and the following updates will cover the rest carefully.
### Solving issue T1: Rapidly changing website structures
-That's why the [adaptive](https://scrapling.readthedocs.io/en/latest/parsing/adaptive/) feature was made. You knew I would talk about it, and here we are :)
+That's why the [adaptive](https://scrapling.readthedocs.io/en/latest/parsing/adaptive.html) feature was made. You knew I would talk about it, and here we are :)
While Web Scraping, if you have the `adaptive` feature enabled, you can save any element's unique properties so you can find it again later when the website's structure changes. The most frustrating thing about changes is that anything about an element can change, so there's nothing to rely on.
That's how the adaptive feature works: it stores everything unique about an element. When the website structure changes, it returns the element with the highest similarity score of the previous element.
-I have already explained this in more detail, with many examples. Read more from [here](https://scrapling.readthedocs.io/en/latest/parsing/adaptive/#how-the-adaptive-feature-works).
+I have already explained this in more detail, with many examples. Read more from [here](https://scrapling.readthedocs.io/en/latest/parsing/adaptive.html#how-the-adaptive-feature-works).
### Solving issue T2: Unstable selectors
If you have been doing Web scraping for a long enough time, you have likely experienced this once. I'm referring to a website that employs poor design patterns, built on raw HTML without any IDs/classes, or uses random class names with nothing else to rely on, etc...
In these cases, standard selection methods with CSS/XPath selectors won't be optimal, and that's why Scrapling provides three more methods for Selection:
-1. [Selection by element content](https://scrapling.readthedocs.io/en/latest/parsing/selection/#text-content-selection): Through text content (`find_by_text`) or regex that matches text content (`find_by_regex`)
-2. [Selecting elements similar to another element](https://scrapling.readthedocs.io/en/latest/parsing/selection/#finding-similar-elements): You find an element, and we will do the rest!
-3. [Selecting elements by filters](https://scrapling.readthedocs.io/en/latest/parsing/selection/#filters-based-searching): You specify conditions/filters that this element must fulfill, we find it!
+1. [Selection by element content](https://scrapling.readthedocs.io/en/latest/parsing/selection.html#text-content-selection): Through text content (`find_by_text`) or regex that matches text content (`find_by_regex`)
+2. [Selecting elements similar to another element](https://scrapling.readthedocs.io/en/latest/parsing/selection.html#finding-similar-elements): You find an element, and we will do the rest!
+3. [Selecting elements by filters](https://scrapling.readthedocs.io/en/latest/parsing/selection.html#filters-based-searching): You specify conditions/filters that this element must fulfill, we find it!
There is no need to explain any of these; click on the links, and it will be clear how Scrapling solves this.
### Solving issue T3: Increasingly complex anti-bot measures
It's well known that creating an undetectable spider requires more than residential/mobile proxies and human-like behavior. It also needs a hard-to-detect browser, which Scrapling provides two main options to solve:
-1. [DynamicFetcher](https://scrapling.readthedocs.io/en/latest/fetching/dynamic/) — This fetcher provides flexible browser automation with multiple configuration options and little under-the-hood stealth improvements.
-2. [StealthyFetcher](https://scrapling.readthedocs.io/en/latest/fetching/stealthy/) — Because we live in a harsh world and you need to take [full measure instead of half-measures](https://www.youtube.com/watch?v=7BE4QcwX4dU), `StealthyFetcher` was born. This fetcher uses our stealthy browser -- a version of [DynamicFetcher](https://scrapling.readthedocs.io/en/latest/fetching/dynamic/) that nearly bypasses all annoying anti-protections, provides tools to handle the rest, and automatically bypasses all types of Cloudflare's Turnstile/Interstitial!
+1. [DynamicFetcher](https://scrapling.readthedocs.io/en/latest/fetching/dynamic.html) — This fetcher provides flexible browser automation with multiple configuration options and little under-the-hood stealth improvements.
+2. [StealthyFetcher](https://scrapling.readthedocs.io/en/latest/fetching/stealthy.html) — Because we live in a harsh world and you need to take [full measure instead of half-measures](https://www.youtube.com/watch?v=7BE4QcwX4dU), `StealthyFetcher` was born. This fetcher uses our stealthy browser -- a version of [DynamicFetcher](https://scrapling.readthedocs.io/en/latest/fetching/dynamic.html) that nearly bypasses all annoying anti-protections, provides tools to handle the rest, and automatically bypasses all types of Cloudflare's Turnstile/Interstitial!
We keep improving these two with each update, so stay tuned :)
diff --git a/images/ProxySeller.png b/images/ProxySeller.png
new file mode 100644
index 0000000..4704070
Binary files /dev/null and b/images/ProxySeller.png differ