大家好,我是何三,独立开发者
爬虫写吐了没?
每次要爬一个网站,你先得装个 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 数据:

| 库 | 耗时(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" 免费下载使用