大家好,我是何三,独立开发者

爬虫写吐了没?

每次要爬一个网站,你先得装个 BeautifulSoup 解析 HTML,然后装 Selenium 处理反爬,搞不定 JavaScript 渲染还得上 Playwright,搞大规模了再引入 Scrapy…… 一套下来光依赖就几十个。

说实话,这种"叠床架屋"的体验我忍了很久。

直到上周翻 GitHub Trending,发现一个 Python 爬虫框架——Scrapling,直接给我整不会了。

一个 pip install,把上面那些全包了。

而且这玩意儿目前已经 近 5 万 Star,解析速度比 BeautifulSoup 快了 784 倍,比老牌解析库 Parsel(Scrapy 用的那个)还要快一丢丢。

来,拆给你看。

这玩意儿到底干了啥?

Scrapling 是安全研究员 Karim Shoair(D4Vinci)写的一个"自适应"爬虫框架。

什么叫自适应?

就是 网站前端改版了,你的爬虫代码不用改

听着有点离谱对吧?它的做法是——当你第一次用 CSS 选择器定位元素时,库会记住这个元素的结构特征。下次网站改版了,你再跑一次 adaptive=True,它自己就能根据相似度算法重新找到目标元素。

from scrapling.fetchers import StealthyFetcher

StealthyFetcher.adaptive = True
p = StealthyFetcher.fetch('https://example.com', headless=True, network_idle=True)

# 第一次:正常爬取
products = p.css('.product', auto_save=True)

# 一个月后网站改版了,.product 变成了 .item-card
# 但你不用改选择器,传个 adaptive=True 就行
products = p.css('.product', adaptive=True)

说实话,这块我也没完全搞懂背后的算法细节——但效果确实能用。原理大概是用了一些文本相似度和 DOM 结构匹配的算法,细节可能有出入,有懂的大佬欢迎指正。

这东西让我想起一个做前端的哥们,他经常吐槽说每次改版都要被爬虫组的人追着骂。有了这个,估计能少挨几顿打。

功能全家桶对比

不止自适应,它是一个"全家桶"

如果只是自适应,说实话不值得 5 万 Star。

Scrapling 真正让我服气的是——别人是工具箱,它是一个工具箱还自带了个工业机器人

来看它到底塞了多少东西进去:

1. 四种 Fetcher,覆盖所有场景

Fetcher 干什么用 场景
Fetcher 普通 HTTP 请求,伪装 TLS 指纹 简单页面,纯静态
StealthyFetcher 无头浏览器 + 反爬绕过 Cloudflare、Turnstile 之类的硬茬子
DynamicFetcher 完整浏览器自动化 需要 JS 渲染的 SPA 页面
AsyncFetcher 异步版 Fetcher 高性能并发场景

最狠的是 StealthyFetcher——Cloudflare 的 Turnstile 验证,它内置就解了。

from scrapling.fetchers import StealthyFetcher

# 一行代码,绕过 Cloudflare
page = StealthyFetcher.fetch('https://nopecha.com/demo/cloudflare')

以前过 Cloudflare 你得搞什么?2Captcha 付费打码,或者用 undetected-chromedriver 各种调参,折腾半天还不一定稳。

现在一个参数 solve_cloudflare=True 搞定。

2. 内置爬虫框架(Spider)

这个我真的吹爆。

Scrapling 带了一个类似 Scrapy 的 Spider 框架,但 API 设计更现代——异步原生,支持多 Session 混合(普通请求 + 无头浏览器同一次爬取混用),还能暂停恢复。

from scrapling.spiders import Spider, Response

class MySpider(Spider):
    name = "demo"
    start_urls = ["https://example.com/"]

    async def parse(self, response: Response):
        for item in response.css('.product'):
            yield {"title": item.css('h2::text').get()}

MySpider().start()

更离谱的是,你可以在一个爬虫里混合使用不同的 Session 类型:

class MultiSessionSpider(Spider):
    name = "multi"
    start_urls = ["https://example.com/"]

    def configure_sessions(self, manager):
        manager.add("fast", FetcherSession(impersonate="chrome"))
        manager.add("stealth", AsyncStealthySession(headless=True), lazy=True)

    async def parse(self, response: Response):
        for link in response.css('a::attr(href)').getall():
            if "protected" in link:
                yield Request(link, sid="stealth")  # 走无头浏览器
            else:
                yield Request(link, sid="fast", callback=self.parse)  # 普通请求

没懂作者为什么这么设计?

他把"快"和"稳"的选择权交给了你的业务逻辑。 普通页面用普通请求(快),遇到反爬页面自动切无头浏览器(稳)。同一个爬虫,不需要分成两个项目跑。

3. MCP Server 加持

2025 年做工具,不接 AI 都不好意思打招呼。

Scrapling 内置了一个 MCP Server,可以直接对接 Claude、Cursor 等 AI 工具。爬虫负责把网页内容结构化,AI 负责理解——分工明确,token 还省了

性能有多离谱?

直接上 Benchmark 数据:

Benchmark 性能对比

耗时(ms) 相比 Scrapling
Scrapling 2.02 1.0x
Parsel / Scrapy 2.04 1.01x
Raw Lxml 2.54 1.257x
PyQuery 24.17 ~12x
Selectolax 82.63 ~41x
MechanicalSoup 1549.71 ~767x
BS4 + Lxml 1584.31 ~784x
BS4 + html5lib 3391.91 ~1679x

注意看最后几行。

BS4 慢了将近 800 倍。

这还不是最夸张的,用 html5lib 解析器时慢了 1600 多倍。当然,BS4 的定位和 Scrapling 不完全一样——BS4 主打灵活易用,性能不是它的强项。但如果你在跑大规模爬虫,这个性能差距意味着:

同样爬 100 万个页面,Scrapling 可能几小时跑完,BS4 可能要跑好几天。

电费都省不少。

怎么上手?

安装就一行:

pip install scrapling

要浏览器功能就装全量版:

pip install "scrapling[fetchers]"
scrapling install

然后你就可以用 CLI 直接开爬了,一行代码都不用写

# 直接把页面正文提取为 Markdown
scrapling extract get 'https://example.com' content.md

# 指定 CSS 选择器,绕过 Cloudflare
scrapling extract fetch 'https://nopecha.com/demo/cloudflare' captchas.html \
  --css-selector '#padded_content a' --solve-cloudflare

这玩意儿还有一个交互式 Shell,装完后输入 scrapling shell 就能进去边调试边写爬虫,比先写脚本再跑 debug 爽多了。像是爬虫界的 Jupyter Notebook。

另外,如果你想找一个比 Scrapling 更"重"但功能更全的框架,可以看看 Crawlee-Python——Apify 出品的爬虫框架,在代理轮换、队列管理方面非常成熟。

总结

Scrapling 不是一个"又一个爬虫库"。

它是一个有野心的项目——想把从发起请求、渲染页面、绕过反爬、解析数据、到大规模并发爬取、断点续传、AI 集成的整条链路,全塞进一个 pip install 里。

装不装都行,看你自己。反正我装完之后,把项目里之前用 BS4 的代码全换掉了。

GitHub 地址:https://github.com/D4Vinci/Scrapling

本文使用 MGO 编辑并发布

关注"何三笔记",回复"mgo" 免费下载使用