Scrapling 爬虫框架完整教程:一次请求到全站抓取,一个库搞定
【免费下载链接】Scrapling🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl!项目地址: https://gitcode.com/GitHub_Trending/sc/Scrapling
Scrapling 是一个 Python 写的自适应网络爬虫框架,定位很清晰:从「抓一个网页」到「跑一个全站爬虫」,你只需要学一套 API。它最特别的地方在于自适应解析——网站改版、元素挪位置之后,它还能靠相似度算法重新找到你要的数据,就像老员工认得新工位上的老同事。反爬场景它也考虑到了,内置的 StealthyFetcher 能自动过掉 Cloudflare 这类常见的反机器人验证。
三分钟快速上手:先抓到第一页数据
不用急着通读源码,先把最小流程跑通。Scrapling 要求 Python 3.10 及以上版本。
第一步,安装。裸装只有解析引擎,想要发请求就得带上fetchers依赖组:
pip install "scrapling[fetchers]"第二步,抓页面 + 选元素。整个过程只有三行 Python:
from scrapling.fetchers import Fetcher page = Fetcher.get('https://quotes.toscrape.com/') # 发一个带浏览器指纹的请求 quotes = page.css('.quote .text::text').getall() # 用 CSS 选择器挑出所有名言 print(quotes)抓回来的page对象上还能继续用 XPath、按文本查找、正则匹配,甚至沿着父子兄弟节点走。这些选择方法在 选择器文档 里有完整清单。
第三步(可选),一行命令零代码抓取。不想写 Python?装上 shell 扩展后,终端直接出结果:
pip install "scrapling[shell]" scrapling install # 下载浏览器及系统依赖(首次使用需要) scrapling extract get 'https://example.com' content.md # 页面正文转成 Markdown 存盘输出后缀决定格式:.md是 Markdown、.txt是纯文本、.html是原始 HTML。详见 CLI 总览。
三种抓取器:按路况选车
Scrapling 把「取网页」这件事拆成了三档,像三种车,对应三种路况:
| 场景 | 用什么 | 特点 |
|---|---|---|
| 静态页面,图快 | Fetcher | 纯 HTTP 请求,可伪装 Chrome 等浏览器的 TLS 指纹,支持 HTTP/3 |
| 页面靠 JS 渲染 | DynamicFetcher | 开真实浏览器(Playwright 驱动),等 DOM 加载完再抓 |
| 有 Cloudflare 等反爬 | StealthyFetcher | 深度指纹伪装,自动过 Turnstile 拦截页 |
每种抓取器都有对应的「会话」版本(FetcherSession/DynamicSession/StealthySession),作用类似浏览器开一个窗口反复用:Cookie 和登录态能跨请求保持,浏览器也不用反复冷启动。怎么选、各支持哪些参数,可以查 抓取器选择指南。
抓完之后还有 Spider 框架兜底:并发控制、按域名限速、断点续爬、代理轮换、robots.txt 遵守,这些「大规模抓数据才会遇到的麻烦事」它都内置了。
图里可以看到 Spider 的工作流:Spider 把初始请求交给 Scheduler,Crawler Engine 统一调度,Session Manager 负责实际抓取,中间通过 Checkpoint 系统保存进度——按 Ctrl+C 暂停,重启后接着上次的位置继续跑。
项目全貌:每个目录为什么存在
带着前面的使用体验回头看代码,目录结构就很好理解了。可以把整个仓库想象成一家爬虫外包公司:
- scrapling/parser.py:公司的「数据挑拣员」。
Selector类在这里,负责解析 HTML、执行 CSS/XPath 查询、做自适应元素定位。你只写解析逻辑、不抓网页时,直接用它就行。 - scrapling/fetchers/:出车部门。
requests.py、chrome.py、stealth_chrome.py三个文件对应上面三种抓取器。 - scrapling/engines/:车库和修车行。
static.py处理 HTTP 请求底层,_browsers/里是浏览器会话池、页面管理和反检测脚本,toolbelt/装了代理轮换、指纹生成、广告域名拦截这些工具。 - scrapling/spiders/:项目工程部。
engine.py是调度引擎,scheduler.py管请求队列,throttle.py做自动限速,checkpoint.py做断点保存,templates/里则是现成模板(如 SitemapSpider、ShopifySpider),继承一下就能用。 - scrapling/core/:后勤部门。
storage.py存自适应解析的记忆数据,ai.py是内置 MCP 服务(把爬虫能力接给 Claude/Cursor 这类 AI 工具),shell.py支撑交互式抓取终端。 - scrapling/cli.py:前台接待。你在终端敲的
scrapling shell、scrapling extract、scrapling mcp都在这里落地。 - scrapling/integrations/scrapy.py:给 Scrapy 老用户的「兼容垫片」,用装饰器就能让 Scrapy 的响应改走 Scrapling 的解析器。
- agent-skill/:一份「AI 技能包」,教编码 Agent 按当前 API 正确写 Scrapling 代码,避免它凭印象瞎猜。
- docs/:全套使用文档,从 快速导航 开始看最顺。
- tests/:按模块镜像了主代码的测试结构,覆盖解析、抓取器、Spider、CLI 等各条线。
根目录下的benchmarks.py和 性能对比数据 也值得一瞥:它的解析器在文本提取基准里跑赢了 BS4 上百倍,这也是「自适应但快」这个卖点的来源。
关键细节:入口在哪,配置文件何时要动
先说一个和很多项目不同的点:Scrapling 没有「启动文件」。它是库不是应用,没有main.py之类的入口等你双击运行。你实际接触它的「入口」有三个:
- Python API:
from scrapling.fetchers import ...就是入口,想深入源码就从 scrapling/fetchers/ 和 scrapling/parser.py 读起; - 命令行:装好后
scrapling命令背后就是 cli.py; - Docker 镜像:项目提供了预置全部浏览器和依赖的官方镜像,配合 Dockerfile 构建,适合不想折腾环境的人。
配置文件速查——日常使用基本碰不到它们,改代码或排查打包问题时才有用:
| 文件 | 管什么 |
|---|---|
| pyproject.toml | 包的定义本体:版本号、Python 版本要求、fetchers/shell/ai这些可选依赖组就是在这里声明的 |
| ruff.toml | 代码风格与静态检查规则 |
| pytest.ini / tox.ini / setup.cfg | 测试怎么跑:pytest 行为、多环境测试矩阵、打包元数据兜底 |
| Dockerfile | 官方 Docker 镜像的构建流程,想定制镜像从它改起 |
| MANIFEST.in | 打包时额外要带进轮子里的文件清单 |
| CONTRIBUTING.md | 贡献规范,提 PR 前读一遍 |
收尾:一张图记住它
Scrapling 的核心思路可以压缩成一句话:用Fetcher系列拿页面,用Selector自适应地挑数据,规模大了就升级到Spider框架,三层之间无缝衔接,中间还有 CLI 和 MCP 服务照顾「不想写代码」和「想让 AI 来写代码」的人。
下一步建议:先看 文档导航 里按需求分流的表格,再按需深入 自适应解析 和 Spider 入门 两篇,基本就能覆盖绝大多数使用场景。
【免费下载链接】Scrapling🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl!项目地址: https://gitcode.com/GitHub_Trending/sc/Scrapling
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考