news 2026/8/29 22:58:52

Scrapling 爬虫框架完整教程:一次请求到全站抓取,一个库搞定

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Scrapling 爬虫框架完整教程:一次请求到全站抓取,一个库搞定

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.pychrome.pystealth_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 shellscrapling extractscrapling mcp都在这里落地。
  • scrapling/integrations/scrapy.py:给 Scrapy 老用户的「兼容垫片」,用装饰器就能让 Scrapy 的响应改走 Scrapling 的解析器。
  • agent-skill/:一份「AI 技能包」,教编码 Agent 按当前 API 正确写 Scrapling 代码,避免它凭印象瞎猜。
  • docs/:全套使用文档,从 快速导航 开始看最顺。
  • tests/:按模块镜像了主代码的测试结构,覆盖解析、抓取器、Spider、CLI 等各条线。

根目录下的benchmarks.py和 性能对比数据 也值得一瞥:它的解析器在文本提取基准里跑赢了 BS4 上百倍,这也是「自适应但快」这个卖点的来源。

关键细节:入口在哪,配置文件何时要动

先说一个和很多项目不同的点:Scrapling 没有「启动文件」。它是库不是应用,没有main.py之类的入口等你双击运行。你实际接触它的「入口」有三个:

  1. Python APIfrom scrapling.fetchers import ...就是入口,想深入源码就从 scrapling/fetchers/ 和 scrapling/parser.py 读起;
  2. 命令行:装好后scrapling命令背后就是 cli.py;
  3. 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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/29 22:55:46

10分钟跑起来:GitHub Trending UI组件库完整上手指南

10分钟跑起来:GitHub Trending UI组件库完整上手指南 【免费下载链接】ui A set of beautifully-designed, accessible components and a code distribution platform. Works with your favorite frameworks. Open Source. Open Code. 项目地址: https://gitcode.…

作者头像 李华
网站建设 2026/8/29 22:54:29

axios CDN 引入:2 个 CDN 怎么选、3 步接好、上线前再补 3 处

axios CDN 引入:2 个 CDN 怎么选、3 步接好、上线前再补 3 处 【免费下载链接】axios Promise based HTTP client for the browser and node.js 项目地址: https://gitcode.com/GitHub_Trending/ax/axios 你的页面没有构建工具、不想装依赖,又想立…

作者头像 李华
网站建设 2026/8/29 22:51:52

TCP三次握手实战:用抓包定位连接超时与半连接队列问题

TCP 三次握手这块内容,基本是每个做网络、做后端、做嵌入式开发的都背过的八股文。但说句实话,能把三次握手真正用来排查线上问题的人,十个里未必有两个。我印象很深的一次线上事故:业务方反馈服务端口时而通、时而不通&#xff0…

作者头像 李华
网站建设 2026/8/29 22:51:08

lazygit 入门完整指南:10 分钟上手动起来 Git 终端可视化操作

lazygit 入门完整指南:10 分钟上手动起来 Git 终端可视化操作 【免费下载链接】lazygit simple terminal UI for git commands 项目地址: https://gitcode.com/GitHub_Trending/la/lazygit lazygit 是一款在终端里运行的 Git 可视化工具,把提交、切分支、变基…

作者头像 李华
网站建设 2026/8/29 22:49:08

JavaScript面试高频题全解析:从this闭包到Promise手写

1. 写在前面:这个 js 系列(2)到底要解决什么问题上一篇文章我把 JavaScript 的基础数据类型、作用域、原型链这些地基性质的内容梳理了一遍,评论区不少读者留言说“面试时真正卡壳的不是背概念,而是面试官拿着代码让我…

作者头像 李华