Scrapling 自适应网页抓取框架
GitHub 8.4 万 star 的 Python 抓取框架。普通 HTTP、真实浏览器、隐身反爬三种模式;网站改版后还能自动重新定位元素。不写代码也能用命令行把网页存成 Markdown。
DOWNLOAD下载地址
-
站内直链 Scrapling 自适应网页抓取框架 · 完整源码包 2.4 MB
-
站内直链 Scrapling 自适应网页抓取框架 · 一键安装工具包(含 Windows 脚本) 8 KB windows,macos,linux
-
GitHub 发布 GitHub 仓库(查看源码 / 提交反馈)
站内直链无需提取码,点击即可下载。
INTRO项目介绍
这是什么
Scrapling 是一个 Python 的自适应网页抓取框架,作者 D4Vinci。GitHub 上 8.4 万 star,BSD-3-Clause 协议,可商用。
说人话:把「抓网页」这件事从「写一堆请求代码 + 跟反爬系统斗智斗勇」,压缩成几行 Python。
它有三个层次,你可以只用最浅的那层,也可以一路用到最深:
- 解析器 —— 拿来当 BeautifulSoup / lxml 的替代品,速度更快
- Fetcher —— 三种取数方式:普通 HTTP、真实浏览器、隐身浏览器(反爬绕过)
- Spider —— 完整的爬虫框架:并发、断点续爬、代理轮换、自动限速
它最特别的地方:自适应
这是 Scrapling 区别于其他所有抓取库的能力。
普通爬虫最怕目标网站改版——昨天 .product 还能选到,今天改成了 .item-card,脚本就废了。Scrapling 的解析器会记住元素的特征,改版后你用 adaptive=True 再查一次,它会自动把元素重新找回来。
page.css('.product', auto_save=True) # 第一次抓,把元素特征存下来
page.css('.product', adaptive=True) # 网站改版后,元素自动重新定位
三种取数方式,按需要选
- 普通 HTTP —— 快。模拟真实浏览器的 TLS 指纹和请求头,支持 HTTP/3。适合大多数静态页面
- 动态加载 —— 用真实的 Chromium 跑 JavaScript,适合内容靠 JS 渲染的页面
- 隐身模式 —— 带指纹伪装,可直接过 Cloudflare Turnstile / Interstitial,不用手写绕过逻辑
from scrapling.fetchers import Fetcher, DynamicFetcher, StealthyFetcher
不写代码也能用
装了命令行功能后,一条命令就能把网页抓下来存成 Markdown、纯文本或 HTML:
scrapling extract get 'https://example.com' content.md
scrapling extract stealthy-fetch 'https://目标站' out.html --solve-cloudflare
输出文件后缀决定格式:.md 存 Markdown(适合喂给 AI),.txt 存纯文本,.html 存原始 HTML。
还有个交互式 IPython Shell(scrapling shell),能把 curl 请求一键转成 Scrapling 请求。
对 AI 这一侧的支持
- MCP 服务器 —— 让 Claude / Cursor 这类 AI 工具直接通过 Scrapling 抓网页,交给模型前会先剥掉提示词注入内容
- 官方 Agent Skill —— 让 AI 写 Scrapling 代码时按当前 API 写,而不是猜
page.markdown()—— 一行把任意页面转成干净的、可供大模型直接使用的 Markdown,构建 RAG 语料很方便
性能
官方基准测试(5000 个嵌套元素提取,100+ 次平均):
- Scrapling —— 1.99 ms(基准,1.0x)
- Parsel / Scrapy —— 2.06 ms(1.04x)
- 原生 lxml —— 2.56 ms(1.29x)
- BeautifulSoup + lxml —— 1562 ms(约 785 倍慢)
自适应元素查找(网站改版后重新定位)比同类方案 AutoScraper 快约 5.5 倍。
适合谁
- 要写数据采集脚本的 Python 开发者
- 被 Cloudflare 之类的反爬系统挡住、又不想自己写绕过逻辑的人
- 想把网页批量转成干净 Markdown 喂给 AI 的人
- 只想抓一两个页面、不想写代码的人(用命令行就够)
安装门槛
需要 Python 3.10 或更高版本。核心库只是一行 pip install scrapling;要用浏览器相关的功能,再装 [fetchers] 并执行一次 scrapling install 下载浏览器内核。完整步骤见本站的安装教程。
使用边界
工具本身是中性的,请遵守目标网站的 robots.txt 与用户协议,不要用于高频冲击、绕过登录抓取非公开数据等行为。上游仓库也因此提供了 robots_txt_obey 选项和 AutoThrottle 自动限速。
关于授权
上游采用 BSD-3-Clause 协议,允许免费使用、修改、商用,保留版权声明即可。本页为中文整理说明,源码版权归原作者 D4Vinci 所有。
GUIDE安装与使用教程
安装前准备
- Python 3.10 或更高版本(本文实测环境是 Python 3.13.14)
- 一个能正常联网的环境,用来下载依赖
- 会打开命令行:Windows 用 PowerShell 或 CMD,macOS 用「终端」,Linux 任意终端
Scrapling 的功能分几层,可以用多少装多少:
pip install scrapling—— 只有解析器,可以当 BeautifulSoup 用pip install "scrapling[fetchers]"—— 三种 Fetcher + Spider 爬虫框架pip install "scrapling[shell]"—— 命令行工具和交互式 Shellpip install "scrapling[ai]"—— MCP 服务器,给 AI 工具用pip install "scrapling[rag]"—— 构建 RAG 语料pip install "scrapling[all]"—— 全部功能,推荐直接装这个
> 只装 scrapling 的话,from scrapling.fetchers import Fetcher 会报 ModuleNotFoundError——这是最常见的新手坑。
第 1 步 · 确认 Python 环境
python --version && pip --version

如果提示 python 不是内部或外部命令,或者版本低于 3.10:
1. 打开 python.org 下载最新版 Python
2. Windows 安装时务必勾选 Add python.exe to PATH(这一步漏了后面全是坑)
3. 装完关掉命令行窗口重新开一个,再执行上面的命令
第 2 步 · 安装 Scrapling
pip install "scrapling[all]" -i https://mirrors.aliyun.com/pypi/simple/

几个说明:
- 引号不能省。
"scrapling[all]"在 Linux / macOS 上不写引号会被 shell 当成通配符展开 -i https://mirrors.aliyun.com/pypi/simple/是让 pip 走国内镜像。不加也能装,只是慢很多——实测不加镜像时下载速度只有约 55 KB/s,光 playwright 一个包就 38.6 MB- 本次一共装上了 63 个依赖包,包括 playwright、patchright、curl_cffi、mcp、IPython
第 3 步 · 验证安装
scrapling --version

再确认三种 Fetcher 都能导入:
python -c "from scrapling.fetchers import Fetcher, DynamicFetcher, StealthyFetcher; print('OK')"
能打印 OK 就没问题了。
第 4 步 · 不写代码,一条命令抓网页
这是最省事的功能。不用写任何 Python,直接从终端把网页抓下来:
scrapling extract get "https://quotes.toscrape.com" quotes.md

输出文件的后缀决定存什么格式:
.md—— 转成干净的 Markdown(适合喂给 AI).txt—— 只要纯文本.html—— 原始 HTML 内容
还可以直接指定要抓的区块:
scrapling extract get "https://quotes.toscrape.com" quotes.txt --css-selector '.quote .text'
需要跑 JavaScript 的页面改用 fetch,反爬严格的站点用 stealthy-fetch:
scrapling extract fetch "https://example.com" out.md --no-headless
scrapling extract stealthy-fetch "https://目标站" out.html --solve-cloudflare
第 5 步 · 用 Python 抓数据
新建一个 demo.py:
from scrapling.fetchers import Fetcher
page = Fetcher.get('https://quotes.toscrape.com/')
quotes = page.css('.quote .text::text').getall()
print("抓到名言条数:", len(quotes))
print("第一条:", quotes[0][:60])
print("标题:", page.css('title::text').get())
运行:
python demo.py

选择器的写法和 BeautifulSoup 基本一致,::text 和 ::attr(href) 这类伪元素沿用了 Scrapy / Parsel 的习惯。
第 6 步 · 动态页面与反爬绕过
三种 Fetcher 按难度递增,按需要选:
Fetcher—— 普通 HTTP 请求,最快。模拟真实浏览器的 TLS 指纹和请求头,支持 HTTP/3DynamicFetcher—— 启动真实浏览器跑 JavaScript,抓 JS 渲染出来的内容StealthyFetcher—— 指纹伪装的高级隐身模式,能直接过 Cloudflare Turnstile / Interstitial
from scrapling.fetchers import DynamicFetcher
page = DynamicFetcher.fetch('https://quotes.toscrape.com/js/', headless=True)
print("JS 渲染后抓到的名言条数:", len(page.css('.quote .text::text').getall()))

省掉几百 MB 的浏览器内核下载
官方推荐跑一次 scrapling install 下载自带的浏览器,但 Chromium + Firefox 体积有 400MB 以上,国内下载很慢。
如果你电脑上已经装了 Chrome / Edge,可以直接复用,省掉这一步:
from scrapling.fetchers import DynamicFetcher
CHROME = r"C:\Program Files\Google\Chrome\Application\chrome.exe"
page = DynamicFetcher.fetch('https://example.com', executable_path=CHROME)
macOS 上是 /Applications/Google Chrome.app/Contents/MacOS/Google Chrome。本文的实测截图就是这么跑的——用本机已有的 Chromium,动态页面和隐身模式都正常工作(隐身模式 4.9 秒抓到 10 条)。
真的需要下载自带浏览器时:
scrapling install
第 7 步 · 全站爬取(Spider 框架)
要抓的不止一个页面时,用 Spider。它和 Scrapy 的写法很像,但支持异步:
from scrapling.spiders import Spider, Response
class QuotesSpider(Spider):
name = "quotes"
start_urls = ["https://quotes.toscrape.com/"]
concurrent_requests = 2
download_delay = 0.5
async def parse(self, response: Response):
for el in response.css('.quote'):
yield {
"text": el.css('.text::text').get(),
"author": el.css('.author::text').get(),
}
result = QuotesSpider().start()
result.items.to_json("quotes.json")
print("抓到条目数:", len(result.items))

Spider 还提供了这些能力:
- 断点续爬 —— 按 Ctrl+C 优雅退出,重启后从上次的位置继续
- AutoThrottle 自动限速 —— 根据目标网站响应速度自动调整延迟,被限流时自动降速
- 代理轮换 —— 内置
ProxyRotator,支持轮询和自定义策略 - robots.txt 合规 —— 设置
robots_txt_obey = True即自动遵守 - 开发模式 —— 首次运行缓存响应,之后直接回放,调
parse()时不用反复请求目标站 - 现成模板 ——
CrawlSpider、SitemapSpider、XMLFeedSpider、CSVFeedSpider、ShopifySpider
第 8 步 · 自适应抓取(Scrapling 的独门功能)
普通爬虫最怕网站改版。Scrapling 可以记住元素特征,改版后自动找回来:
page.css('.product', auto_save=True) # 第一次抓,把元素特征存下来
page.css('.product', adaptive=True) # 网站改版后,元素自动重新定位
官方基准测试里,这个能力比同类方案 AutoScraper 快约 5.5 倍。
常见问题
ModuleNotFoundError: No module named 'scrapling.fetchers'—— 只装了pip install scrapling,没装 fetchers。改用pip install "scrapling[all]"- pip 下载特别慢或者卡住 —— 加
-i https://mirrors.aliyun.com/pypi/simple/走国内镜像;换网络重试也行 scrapling install下载浏览器失败 —— 不影响普通抓取。如上面第 6 步,直接指定本机已有的 Chrome 也行- 抓 Cloudflare 保护的站点超时 —— 改用
StealthyFetcher,并加上solve_cloudflare=True - Windows 上提示 python 不是内部或外部命令 —— 安装 Python 时没勾 Add to PATH,重装并勾选,或手动把 Python 目录加进环境变量
- 想给 AI 工具用 —— 装上
scrapling[ai]后执行scrapling mcp,可以接到 Claude / Cursor 这类支持 MCP 的客户端
不想敲命令行?
本站提供了一键安装工具包,下载后双击即可,脚本会自动帮你完成第 2 步到第 3 步的全部操作。
使用提醒
抓取前请先看目标网站的 robots.txt 和用户协议,控制请求频率。Scrapling 本身提供了 robots_txt_obey 选项和 AutoThrottle 自动限速,建议开启。