<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>网页抓取 on Text Matrix</title><link>https://txtmix.com/tags/%E7%BD%91%E9%A1%B5%E6%8A%93%E5%8F%96/</link><description>Recent content in 网页抓取 on Text Matrix</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Sat, 23 May 2026 08:55:34 +0800</lastBuildDate><atom:link href="https://txtmix.com/tags/%E7%BD%91%E9%A1%B5%E6%8A%93%E5%8F%96/index.xml" rel="self" type="application/rss+xml"/><item><title>Scrapling：现代网页爬虫框架·自适应·反反爬</title><link>https://txtmix.com/posts/tech/scrapling-adaptive-web-scraping-framework-guide/</link><pubDate>Sun, 12 Apr 2026 02:31:39 +0800</pubDate><guid>https://txtmix.com/posts/tech/scrapling-adaptive-web-scraping-framework-guide/</guid><description>&lt;h1 id="scrapling现代网页爬虫框架自适应反反爬并发爬取">Scrapling：现代网页爬虫框架——自适应、反反爬、并发爬取&lt;/h1>
&lt;h2 id="一项目概述">一、项目概述&lt;/h2>
&lt;h3 id="11-scrapling-是什么">1.1 Scrapling 是什么&lt;/h3>
&lt;p>&lt;strong>Scrapling&lt;/strong> 是 D4Vinci 开发的&lt;strong>自适应网页爬虫框架&lt;/strong>，能够处理从单次请求到大规模爬取的各类场景。其核心特点是：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>自适应解析&lt;/strong>：网站结构变化时自动定位元素&lt;/li>
&lt;li>&lt;strong>反反爬绕过&lt;/strong>：开箱即用绕过 Cloudflare Turnstile 等反爬机制&lt;/li>
&lt;li>&lt;strong>并发爬取&lt;/strong>：支持 Scrapy 风格的 Spider 框架&lt;/li>
&lt;li>&lt;strong>AI 集成&lt;/strong>：内置 MCP Server，支持 AI 辅助爬取&lt;/li>
&lt;/ul>
&lt;h3 id="12-核心数据">1.2 核心数据&lt;/h3>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>指标&lt;/th>
 &lt;th>数值&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>Stars&lt;/td>
 &lt;td>36.1k ⭐&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Forks&lt;/td>
 &lt;td>3.1k&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>最新版本&lt;/td>
 &lt;td>v0.4.5 (2026-04-07)&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>许可证&lt;/td>
 &lt;td>BSD-3-Clause&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>语言&lt;/td>
 &lt;td>Python 99.9%&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>贡献者&lt;/td>
 &lt;td>17&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h3 id="13-为什么选择-scrapling">1.3 为什么选择 Scrapling&lt;/h3>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>特点&lt;/th>
 &lt;th>说明&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>🤖 自适应解析&lt;/td>
 &lt;td>网站改版后自动重新定位元素&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>🛡️ 反反爬&lt;/td>
 &lt;td>绕过 Cloudflare Turnstile&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>⚡ 性能卓越&lt;/td>
 &lt;td>文本提取 2.02ms（比 MechanicalSoup 快 767 倍）&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>🕷️ Spider 框架&lt;/td>
 &lt;td>Scrapy 风格，支持并发、暂停/恢复&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>🔌 AI 集成&lt;/td>
 &lt;td>MCP Server，AI 辅助数据提取&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>🐳 Docker 支持&lt;/td>
 &lt;td>一键部署，含所有浏览器&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;hr>
&lt;h2 id="二技术架构">二、技术架构&lt;/h2>
&lt;h3 id="21-整体架构">2.1 整体架构&lt;/h3>
&lt;div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
 &lt;div class="code-header language-">
 &lt;span class="code-title">&lt;i class="arrow fas fa-angle-right" aria-hidden="true">&lt;/i>&lt;/span>
 &lt;span class="ellipses">&lt;i class="fas fa-ellipsis-h" aria-hidden="true">&lt;/i>&lt;/span>
 &lt;span class="copy" title="复制到剪贴板">&lt;i class="far fa-copy" aria-hidden="true">&lt;/i>&lt;/span>
 &lt;/div>&lt;pre tabindex="0">&lt;code>┌─────────────────────────────────────────────────────────────┐
│ Scrapling │
├─────────────────────────────────────────────────────────────┤
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ Spiders │ │ Fetchers │ │ Parser │ │
│ │ (爬取框架) │ │ (请求引擎) │ │ (解析引擎) │ │
│ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ │
│ └────────────────┼────────────────┘ │
│ ▼ │
│ ┌─────────────────────────────────────────────────┐ │
│ │ Core Engine │ │
│ │ • Session Management │ │
│ │ • Proxy Rotation │ │
│ │ • Adaptive Element Tracking │ │
│ │ • Checkpoint/Pause &amp;amp; Resume │ │
│ └─────────────────────────────────────────────────┘ │
│ ▼ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ Fetcher │ │StealthyFetcher│ │DynamicFetcher│ │
│ │ (HTTP) │ │ (反反爬) │ │ (浏览器) │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
└─────────────────────────────────────────────────────────────┘&lt;/code>&lt;/pre>&lt;/div>
&lt;h3 id="22-核心组件">2.2 核心组件&lt;/h3>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>组件&lt;/th>
 &lt;th>功能&lt;/th>
 &lt;th>适用场景&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>&lt;strong>Fetcher&lt;/strong>&lt;/td>
 &lt;td>HTTP 请求，TLS 指纹伪装&lt;/td>
 &lt;td>静态页面&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;strong>StealthyFetcher&lt;/strong>&lt;/td>
 &lt;td>高级反反爬，Cloudflare 绕过&lt;/td>
 &lt;td>反爬网站&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;strong>DynamicFetcher&lt;/strong>&lt;/td>
 &lt;td>浏览器自动化，JS 渲染&lt;/td>
 &lt;td>SPA/动态加载&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;strong>Spider&lt;/strong>&lt;/td>
 &lt;td>并发爬取框架&lt;/td>
 &lt;td>大规模爬取&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;strong>Selector&lt;/strong>&lt;/td>
 &lt;td>CSS/XPath/文本解析&lt;/td>
 &lt;td>数据提取&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;strong>MCP Server&lt;/strong>&lt;/td>
 &lt;td>AI 辅助爬取&lt;/td>
 &lt;td>智能数据提取&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;hr>
&lt;h2 id="三fetcher-详解">三、Fetcher 详解&lt;/h2>
&lt;h3 id="31-三种-fetcher-对比">3.1 三种 Fetcher 对比&lt;/h3>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Fetcher&lt;/th>
 &lt;th>速度&lt;/th>
 &lt;th>反反爬&lt;/th>
 &lt;th>JS 支持&lt;/th>
 &lt;th>适用场景&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>&lt;strong>Fetcher&lt;/strong>&lt;/td>
 &lt;td>⚡⚡⚡&lt;/td>
 &lt;td>❌&lt;/td>
 &lt;td>❌&lt;/td>
 &lt;td>静态页面，高速请求&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;strong>StealthyFetcher&lt;/strong>&lt;/td>
 &lt;td>⚡⚡&lt;/td>
 &lt;td>✅ Cloudflare&lt;/td>
 &lt;td>❌&lt;/td>
 &lt;td>反爬网站，无需 JS&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;strong>DynamicFetcher&lt;/strong>&lt;/td>
 &lt;td>⚡&lt;/td>
 &lt;td>✅&lt;/td>
 &lt;td>✅&lt;/td>
 &lt;td>SPA，动态内容&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h3 id="32-http-请求fetcher">3.2 HTTP 请求（Fetcher）&lt;/h3>
&lt;div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
 &lt;div class="code-header language-python">
 &lt;span class="code-title">&lt;i class="arrow fas fa-angle-right" aria-hidden="true">&lt;/i>&lt;/span>
 &lt;span class="ellipses">&lt;i class="fas fa-ellipsis-h" aria-hidden="true">&lt;/i>&lt;/span>
 &lt;span class="copy" title="复制到剪贴板">&lt;i class="far fa-copy" aria-hidden="true">&lt;/i>&lt;/span>
 &lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">scrapling.fetchers&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">Fetcher&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">FetcherSession&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 单次请求&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">page&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">Fetcher&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">get&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;https://quotes.toscrape.com/&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">quotes&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">page&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">css&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;.quote .text::text&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">getall&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 会话请求（保持 Cookie）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">with&lt;/span> &lt;span class="n">FetcherSession&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">impersonate&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s1">&amp;#39;chrome&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="n">session&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">page&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">session&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">get&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;https://example.com/&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">data&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">page&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">css&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;.item::text&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">getall&lt;/span>&lt;span class="p">()&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/div>
&lt;p>&lt;strong>特性：&lt;/strong>&lt;/p></description></item></channel></rss>