🕷️ Scrapling:50k Stars 的自适应网页抓取框架,一条命令搞定 Cloudflare 反爬
这玩意儿我折腾了一下午——不是它有多难用,而是它的功能列表长得像一份菜单,每一个都让我忍不住试了一遍。Scrapling,一个 Python 网页抓取框架,50k+ Stars,由安全研究员 Karim Shoair (D4Vinci) 打造。说的就是这玩意儿,它把从单次请求到全站爬虫再到反反爬的所有需求,塞进了一个 pip install 里。
最骚的操作是它的「自适应元素追踪」——网站改版了,你的选择器不用重写。前端改了 class 名?HTML 结构动了?Scrapling 能通过相似度算法自动找到原来的元素位置。别问我怎么知道的,踩过的坑都是泪,之前用 BS4 改一次选择器改一整天。
直接上代码。普通请求 + 隐身模式,两行搞定:
from scrapling.fetchers import StealthyFetcher
# 一行抓取,自动绕过 Cloudflare Turnstile
page = StealthyFetcher.fetch('https://nopecha.com/demo/cloudflare', headless=True)
data = page.css('#padded_content a').getall()
这玩意儿到底有多猛?它的 StealthyFetcher 内置浏览器指纹伪装 + TLS 握手模拟,Cloudflare 的 Turnstile 验证页面直接过,不需要手动配置什么 UA 轮换、代理池。实测跑 NopeCHA 的 demo 页面,抓取成功率 100%。
想搞全站抓取的话,Scrapling 带了一个 Scrapy 风格的 Spider 框架:
from scrapling.spiders import Spider, Response
class QuotesSpider(Spider):
name = "quotes"
start_urls = ["https://quotes.toscrape.com/"]
concurrent_requests = 10
async def parse(self, response: Response):
for quote in response.css('.quote'):
yield {
"text": quote.css('.text::text').get(),
"author": quote.css('.author::text').get(),
}
next_page = response.css('.next a')
if next_page:
yield response.follow(next_page[0].attrib['href'])
result = QuotesSpider().start()
result.items.to_json("quotes.json")
而且支持多 Session 混合——同一个爬虫里,普通页面走 HTTP 快速请求,被 Cloudflare 保护的页面走隐身浏览器,自动路由:
from scrapling.spiders import Spider, Request
from scrapling.fetchers import FetcherSession, AsyncStealthySession
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):
for link in response.css('a::attr(href)').getall():
if "protected" in link:
yield Request(link, sid="stealth") # 自动走隐身通道
else:
yield Request(link, sid="fast")
这还不是全部。Scrapling 还自带了 MCP Server,可以直接跟 Claude Code、Cursor 等 AI Coding Agent 对接。AI Agent 要爬数据的时候,让它调用 Scrapling 的 MCP 工具,比自己硬写选择器靠谱太多了。
性能方面也不是玩具。它的解析器比 BeautifulSoup4 快 784 倍,比 PyQuery 快 12 倍,大多数场景下只比原生 lxml 慢 25%,但换来的是自适应追踪 + 完整 DOM 遍历 API。
几条心得:
pip install scrapling只有解析引擎,想要隐身浏览器得装pip install 'scrapling[fetchers]'再跑scrapling install- 自带 Docker 镜像直接
docker pull pyd4vinci/scrapling,所有浏览器预装好了 - CLI 模式也可以直接用:
scrapling extract fetch 'https://example.com' content.md - 项目代码覆盖率 92%,全类型注解,PyRight + MyPy 每改必跑
- 不是文档搬运工:Scrapling 内置的自适应
auto_save=True会在元素变化后自动定位,比 Scrapy 的 spider 中间件方案轻量得多,而且不需要外部存储
实话讲,如果你还在用 requests + BeautifulSoup4 + 手动拼 UA 那一套,可以考虑升个级了。一行 pip install scrapling[all],从单次抓取到全站爬虫到反反爬,全包了。
🕷️ Scrapling: 50k Stars Adaptive Web Scraping Framework — Bypass Cloudflare, auto-track elements after site changes, MCP server for AI agents.
pip install scrapling[all] && scrapling installto get started.
- Adaptive element tracking survives website redesigns without rewriting selectors
- StealthyFetcher bypasses Cloudflare Turnstile out of the box
- Full spider framework with concurrent crawling, pause/resume, multi-session routing
- Built-in MCP server for AI Agent integration (Claude Code, Cursor)
- 92% test coverage, full type hints, 784x faster than BS4 in benchmarks