Scrapling 是一个自适应网络爬虫框架,可以处理从单个请求到全面爬取的所有操作。它的解析器能够学习网站变化,并在页面更新时自动重新定位元素。它的抓取器开箱即用,可绕过 Cloudflare Turnstile 等反机器人系统。它的爬虫框架支持并发多会话抓取,并具备暂停/恢复和自动代理轮换功能——所有这些只需几行 Python 代码即可实现
包含的特点
Spiders——一个完整的爬虫框架
- 类似 Scrapy 的 Spider API:定义带有start_urls异步parse回调和Request/Response对象的蜘蛛。
- 并发爬取:可配置并发限制、按域限速和下载延迟。
- 多会话支持:统一的 HTTP 请求接口,以及单个爬虫中的隐蔽无头浏览器——按 ID 将请求路由到不同的会话。
- 暂停与恢复:基于检查点的爬取持久化。按 Ctrl+C 可正常关闭;重新启动即可从上次中断的地方继续。
- 流式模式:实时流式传输抓取到的项目,并async for item in spider.stream()提供实时统计数据——非常适合 UI、管道和长时间运行的爬取。
- 阻塞请求检测:自动检测并重试阻塞的请求,逻辑可自定义。
- 内置导出:通过钩子和您自己的管道或内置的 JSON/JSONL 分别导出result.items.to_json()结果result.items.to_jsonl()。
支持会话的高级网站抓取
- HTTP 请求:使用该类可以发出快速且隐蔽的 HTTP 请求Fetcher。它可以模拟浏览器的 TLS 指纹、标头,并使用 HTTP/3。
- 动态加载DynamicFetcher:通过支持 Playwright 的 Chromium 和 Google 的 Chrome 的类,实现动态网站的完全浏览器自动化加载。
- 反机器人绕过:具备高级隐蔽功能StealthyFetcher和指纹欺骗技术。可轻松通过自动化绕过所有类型的 Cloudflare Turnstile/Interstitial 广告位。
- 会话管理:提供持久会话支持FetcherSession,StealthySession包括DynamicSession用于跨请求进行 cookie 和状态管理的类。
- 代理轮换:内置ProxyRotator循环或自定义轮换策略,适用于所有会话类型,并支持按请求进行代理覆盖。
- 域名屏蔽:在基于浏览器的抓取器中屏蔽对特定域名(及其子域名)的请求。
- 异步支持:所有获取器和专用异步会话类均提供完整的异步支持。
自适应抓取与人工智能集成
- 智能元素跟踪:利用智能相似性算法,在网站更改后重新定位元素。
- 智能灵活选择:CSS 选择器、XPath 选择器、基于过滤器的搜索、文本搜索、正则表达式搜索等等。
- 查找相似元素:自动查找与已找到元素相似的元素。
- MCP 服务器用于 AI:内置 MCP 服务器,支持 AI 辅助的网络爬虫和数据提取。MCP 服务器具备强大的自定义功能,利用网络爬虫技术提取目标内容,然后将其传递给 AI(Claude/Cursor 等),从而通过最大限度地减少令牌使用来加快操作速度并降低成本。(演示视频))
高性能且久经考验的架构
- 速度极快:性能优化,优于大多数 Python 爬虫库。
- 内存高效:优化的数据结构和延迟加载,以最大限度地减少内存占用。
- 快速 JSON 序列化:比标准库快 10 倍。
- 久经考验:Scrapling 不仅拥有 92% 的测试覆盖率和完整的类型提示覆盖率,而且在过去一年中,每天都有数百个 Web Crapers 使用它。
开发者/网络爬虫友好体验
- 交互式网页抓取 Shell:可选的内置 IPython shell,集成了抓取功能、快捷方式和新工具,可加快网页抓取脚本的开发速度,例如将 curl 请求转换为抓取请求并在浏览器中查看请求结果。
- 直接从终端使用:您也可以选择使用 Scrapling 来抓取 URL,而无需编写任何代码!
- 丰富的导航 API:高级 DOM 遍历,支持父级、兄弟级和子级导航方法。
- 增强的文本处理:内置正则表达式、清理方法和优化的字符串操作。
- 自动生成选择器:为任何元素生成强大的 CSS/XPath 选择器。
- 熟悉的 API:类似于 Scrapy/BeautifulSoup,使用与 Scrapy/Parsel 相同的伪元素。
- 完整的类型覆盖:提供全面的类型提示,带来卓越的 IDE 支持和代码补全。每次代码更改时,PyRight和MyPy都会自动扫描整个代码库。
- 已准备的 Docker 镜像:每次发布时,都会自动构建并推送包含所有浏览器的 Docker 镜像。
说明
Scrapling 框架的功能还是很强大,对于ai 自动爬虫处理还是值得尝试下的
参考资料
https://github.com/D4Vinci/Scrapling