网站改版后还能重新找到你元素的抓取器
每个抓取器都以同样的方式烂掉:目标站发了一次改版,你的 CSS 选择器指向了不再存在的节点,管线于是悄无声息地返回空。Scrapling 的招牌功能正是冲着这种衰变来的。用 auto_save=True 标记一个元素,等页面后来变了,你传 adaptive=True,解析器就凭它学到的关于这个元素的信息把它重新定位,而不是靠一条刚刚断掉的脆弱路径。
from scrapling.fetchers import StealthyFetcher
StealthyFetcher.adaptive = True
page = StealthyFetcher.fetch('https://example.com', headless=True, network_idle=True)
products = page.css('.product', auto_save=True)
# 之后,网站改了标记结构:
products = page.css('.product', adaptive=True)
这一个想法,能容忍变化的选择器,正是 Scrapling 区别于多数抓取代码那种「解析了就祈祷」做法的地方。框架里其余的一切,都是围着把这层自适应能力做到任意规模可用而建的。
三层,一个库
Scrapling 刻意做成一整套栈,而不只是一个解析器:
- Fetchers 从快速 HTTP 请求(能模仿浏览器的 TLS 指纹和头、还能讲 HTTP/3),到经由 Playwright Chromium 的完整浏览器自动化,再到
StealthyFetcher,后者专为通过 Cloudflare 的 Turnstile 及类似拦截页而造。 - Sessions 跨请求保持 cookie 和状态,有
FetcherSession、StealthySession、DynamicSession几种,外加一个内建的ProxyRotator。 - Spiders 给出 Scrapy 风格的 API,有
start_urls和异步parse回调、带按域限流的并发爬取、基于检查点的暂停与恢复、一个流式模式、可选的robots.txt遵守,以及一个开发缓存:它回放响应,让你在不重新打目标站的前提下迭代parse()。
它还附带一个 MCP server 和一个 CLI,所以一个 LLM agent 能驱动它。
安装
Scrapling 需要 Python 3.10 或更高。基础安装只含解析:
pip install scrapling
要用基于浏览器的 fetcher,你需要装 extra 加一次性的浏览器下载:
pip install "scrapling[fetchers]"
scrapling install
AI 和 shell 功能各有自己的 extra(scrapling[ai]、scrapling[shell]),scrapling[all] 把所有的都拉进来。记住:任何 extra 仍需要 scrapling install 来装浏览器依赖。
issue 区在提醒你什么
open issue 数接近零(截至 2026-06 为 1),所以信号在已解决的帖子里,而它们都聚在框架更难的那些功能上:
- 代理轮换有过糙的地方。 一个被讨论的 issue 报告
ProxyRotator抛NotImplementedError。如果你围着轮换搭爬虫,早点拿你的版本验证这条路径。 - MCP 集成和 stdout 打架。 一个值得注意的帖子记录:Scrapling 的「Downloading…」进度消息渗进 MCP 协议流、把通信搞坏了。如果你经 MCP 把它接到 agent 上,留意 stdout 上的噪声。
- 解析器的边界情况在真实页面上冒出来。 一个
TextHandlers对象没有partition属性的错误,正是那种只在脏乱的实时 HTML 上才现身的东西,而那恰恰是抓取器生活的地方。
这些是一个野心框架的接缝,不是疏于维护的迹象:项目发版很勤,v0.4.9 在 2026 年 6 月发布。
关于它用途的一点实话
Scrapling 在反爬规避上下了重注,它的 README 密密麻麻是代理厂商的赞助。这告诉你受众是谁:那些在抓取主动抵抗自己的站点的人。框架含可选的 robots.txt 遵守,但用隐身 fetcher 绕过防护可能违反站点的服务条款。能力本身是中性的;留在法律和站点规则之内的责任,在你。
Scrapling 与 Scrapy、crawl4ai 的对比
| Scrapling | Scrapy | crawl4ai | |
|---|---|---|---|
| Stars | 62,607 | 62,180 | 68,182 |
| 侧重 | 自适应选择器与隐身 | 成熟的爬取框架 | 给 LLM 用的提取 |
| 许可 | BSD-3-Clause | BSD-3-Clause | Apache-2.0 |
| 反爬 | 内建隐身 fetcher | 自备 | 自备 |
计数取自 GitHub,截至 2026 年 6 月。Scrapy 是长期确立的爬取框架,Scrapling 的 spider API 与它呼应,但 Scrapy 把反爬处理留给你。crawl4ai 面向给 LLM 管线用的干净 Markdown 和结构化输出,而非有韧性的选择。Scrapling 与众不同的押注是开箱即带的自适应解析器和隐身 fetcher。
相关
crawl4ai 追逐的「Markdown 加 LLM」提取角度,与 MarkItDown 有重叠。想看还有什么在往上爬,见每日趋势速报和周报。
FAQ
Scrapling 的「自适应」指什么? 用 auto_save=True 保存的元素,在站点改了标记后能用 adaptive=True 重新定位,于是选择器扛得过改版、而不是悄悄失效。
用它需要浏览器吗? 只有基于浏览器的 fetcher 需要。装 scrapling[fetchers] 并跑 scrapling install 来下载它们;纯 HTTP 抓取和解析无需浏览器。
它能绕过 Cloudflare 吗? StealthyFetcher 专为通过 Cloudflare Turnstile 及类似挑战而造。你是否「应该」这么做,是目标站的服务条款问题。
有 agent 集成吗? 有,它附带 MCP server 和 CLI。留意 stdout 噪声干扰 MCP 流,这是个有记录的 issue。