网站改版后还能重新找到你元素的抓取器

每个抓取器都以同样的方式烂掉:目标站发了一次改版,你的 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 和状态,有 FetcherSessionStealthySessionDynamicSession 几种,外加一个内建的 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 报告 ProxyRotatorNotImplementedError。如果你围着轮换搭爬虫,早点拿你的版本验证这条路径。
  • MCP 集成和 stdout 打架。 一个值得注意的帖子记录:Scrapling 的「Downloading…」进度消息渗进 MCP 协议流、把通信搞坏了。如果你经 MCP 把它接到 agent 上,留意 stdout 上的噪声。
  • 解析器的边界情况在真实页面上冒出来。 一个 TextHandlers 对象没有 partition 属性的错误,正是那种只在脏乱的实时 HTML 上才现身的东西,而那恰恰是抓取器生活的地方。

这些是一个野心框架的接缝,不是疏于维护的迹象:项目发版很勤,v0.4.9 在 2026 年 6 月发布。

关于它用途的一点实话

Scrapling 在反爬规避上下了重注,它的 README 密密麻麻是代理厂商的赞助。这告诉你受众是谁:那些在抓取主动抵抗自己的站点的人。框架含可选的 robots.txt 遵守,但用隐身 fetcher 绕过防护可能违反站点的服务条款。能力本身是中性的;留在法律和站点规则之内的责任,在你。

Scrapling 与 Scrapy、crawl4ai 的对比

ScraplingScrapycrawl4ai
Stars62,60762,18068,182
侧重自适应选择器与隐身成熟的爬取框架给 LLM 用的提取
许可BSD-3-ClauseBSD-3-ClauseApache-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。