分享到微信

当前解读页的微信分享二维码

用微信扫一扫打开,点击右上角「···」分享给朋友或朋友圈。

手机上可截屏后,在微信扫一扫中从相册识别二维码。

D4Vinci/Scrapling

数据

把 HTTP 请求、隐身浏览器、解析和并发爬虫合为一体的 Python 抓取框架,适合从单页请求扩展到整站采集的开发者。

91,474
9,607
Python
BSD-3-Clause
创建于 2 年前

项目介绍

Scrapling 把抓取流程的几个环节放进同一个 Python 库:带浏览器 TLS 指纹模拟的快速 HTTP 请求、应对 JavaScript 渲染和 Cloudflare 防护的隐身浏览器、CSS/XPath/文本/正则解析,以及支持并发、重试、代理轮换和多格式导出的 Spider 框架。它同时提供 CLI、交互式 Shell 和 MCP 服务器,AI Agent 也能通过它浏览页面、提取数据。适合从抓一个页面起步、之后需要整站爬取的开发者。

解析层面有一个值得注意的能力:通过选择器找到的元素在网站改版后可以按相似度重新定位,而不是直接失效。

快速使用

Scrapling 要求 Python 3.10 或更高版本。基础安装只包含解析器;抓取和爬虫需要 fetchers 附加依赖和浏览器组件:

pip install "scrapling[fetchers]"
scrapling install

然后抓取一个页面并提取文本:

from scrapling.fetchers import Fetcher

page = Fetcher.get("https://quotes.toscrape.com/")
quotes = page.css(".quote .text::text").getall()
print(quotes)

要爬取并保存结果,继承 Spider,定义 start_urls 和异步 parse 回调,调用 .start(),再用 result.items.to_json("quotes.json") 导出。README 中针对同一示例站的代码会输出 10,并把作者和名言写入文件(README 示例)。无头浏览器抓取依赖 scrapling install 装好的浏览器资源,普通 HTTP 请求则不需要。

不想写代码时,可以用 extract 命令把页面直接保存为 .txt、.md 或 .html,并用 --css-selector 过滤内容(CLI 文档)。先安装 scrapling[shell],再运行 scrapling shell 进入交互模式。

使用约束

  • 默认的 pip install scrapling 有意不安装抓取器和 CLI 依赖;在这种安装下导入 scrapling.fetchers 或 scrapling.spiders 会报 ModuleNotFoundError。
  • 浏览器抓取(StealthyFetcher 和隐身会话)需要 scrapling install 安装的浏览器与指纹依赖,或改用 Docker 镜像 pyd4vinci/scrapling;HTTP 抓取不需要。
  • robots_txt_obey 是可选开关,默认不遵守 Disallow、Crawl-delay 和 Request-rate,是否遵守由调用方决定。
  • 项目声明该库仅用于教育科研目的,使用者需自行遵守当地法律和网站服务条款。
  • 许可证为 BSD-3-Clause。

HotRepo 点评

在 2026-11-01 的 Python 日榜记录中,Scrapling 新增 844 Star,并取得当天该语言榜第 6 的最好名次。这只是单日快照,说明它在 Python 榜单上有一个强势的日子,不能据此判断持续趋势;该记录也没有对应的全部语言日榜名次可供比较。项目在 Hacker News 上有过两次讨论,一次是 2024 年 10 月的发布,一次是 2025 年 4 月的 v0.2.99 版本说明,但两次讨论热度都很低(4 分和 1 分),没有值得参考的实质性外部评论。这次增长更像是一个品类信号——一个同时提供 MCP 服务器和 Agent Skill 的抓取库——而不是采用质量的证据。

本文由 AI 根据项目 README 生成,更新于 ,以项目官方文档为准。

Hacker News 讨论

Scrapling: Fast, Adaptive Web Scraping for Python
▲ 4 · 1 条评论 · 2024年10月13日