Update avaliable. Click RELOAD to update.
📱 安装应用到主屏幕,获得更好体验
目录

Scrapling:56k 星的 Python 爬虫框架,能自动适应网站结构变化

概览

Scrapling 是一个 Python Web 爬虫框架,从单次请求到全站爬取一条龙。56,841 GitHub Star,BSD-3-Clause 开源

项目地址:https://github.com/D4Vinci/Scrapling 文档:https://scrapling.readthedocs.io/

一句话定位:一个库搞定从解析到抓取到并发爬取的所有需求,零妥协

核心亮点:自适应解析器

Scrapling 最有特色的功能是它的自适应解析器

正常爬虫最头疼的事情:辛辛苦苦写好了选择器,网站改了个版,所有规则全部失效,代码跑断。

Scrapling 的解法是 auto_save + adaptive 机制:

from scrapling.fetchers import StealthyFetcher

# 首次抓取:保存元素的"指纹"
p = StealthyFetcher.fetch('https://example.com')
products = p.css('.product', auto_save=True)

# 后来网站改版了,传入 adaptive=True
# Scrapling 会自动根据保存的指纹重新定位元素
products = p.css('.product', adaptive=True)

auto_save=True 会保存元素的结构特征、位置关系、属性模式等多种”指纹”。当网站结构发生变化时,adaptive=True 会用这些指纹在更新的 DOM 中重新定位元素。

对于定时运行的爬虫任务,这个功能意味着不用每次网站改版都改代码

四种 Fetcher

Scrapling 提供了四种不同级别的抓取器:

Fetcher用途特点
Fetcher基础同步请求最轻量,适合简单页面
AsyncFetcher异步并发请求高性能,适合批量抓取
StealthyFetcher绕过反爬Cloudflare Turnstile 开箱绕过,headless 模式
DynamicFetcherJavaScript 渲染需要浏览器渲染的动态页面

其中 StealthyFetcher 是最常用的——它内置了浏览器指纹伪装和反检测机制,能绕过大多数常见的反爬系统。

Spider 框架:扩展到全站并发爬取

Scrapling 的 Spider 框架构建在异步之上,支持并发、多会话爬取、暂停/恢复、自动代理轮换:

from scrapling.spiders import Spider

class MySpider(Spider):
    name = "demo"
    start_urls = ["https://example.com/products"]

    async def parse(self, response):
        for item in response.css('.product'):
            yield {
                "title": item.css('h2::text').get(),
                "price": item.css('.price::text').get(),
            }
        # 自动跟踪分页链接
        next_page = response.css('.next::attr(href)').get()
        if next_page:
            yield response.follow(next_page)

MySpider().start()

这个架构和 Scrapy 类似,但更轻量、更现代(原生 async/await)。配合代理轮换和并发控制,一个脚本就能完成中小规模的数据采集。

AI Agent 集成:MCP Server

Scrapling 内置了 MCP(Model Context Protocol)服务器,这意味着 AI Agent 可以直接通过 MCP 调用 Scrapling 来执行网页抓取任务。

对于在 AI 编程环境中使用 Scrapling,项目还提供了 Agent Skill 目录和 OpenClaw 支持。AI Agent 可以通过自然语言描述目标,Scrapling 自动完成抓取和解析。

安装与快速上手

安装极其简单:

pip install scrapling

最小可工作示例——单次抓取:

from scrapling.fetchers import StealthyFetcher

# 一行代码完成抓取+解析
p = StealthyFetcher.fetch(
    'https://example.com',
    headless=True,
    network_idle=True
)

# CSS 选择器提取
title = p.css('h1::text').get()
links = p.css('a::attr(href)').all()

解析引擎也支持 XPath 选择器,并且内置了一些便利方法——比如 .css().xpath() 返回的对象支持链式调用和多种提取方式。

技术架构

Scrapling 的设计遵循模块化原则:

scrapling/
├── fetchers/       # 四种抓取器(Fetcher、AsyncFetcher、StealthyFetcher、DynamicFetcher)
├── parser/         # 自适应解析引擎(auto_save / adaptive 核心逻辑)
├── spiders/        # 并发爬虫框架(Spider)
├── selector/       # CSS/XPath 选择器
├── cli/            # 命令行工具
└── mcp_server/     # MCP 协议支持(AI Agent 集成)

每个模块可以独立使用。如果你只需要解析和选择器,只装核心包就行——Fetcher 相关的依赖是可选的。

适用场景

场景推荐方案
单页数据提取StealthyFetcher + CSS 选择器
定时监控(网站经常改版)加上 auto_save=True + adaptive=True
中小规模站点头Spider 框架 + AsyncFetcher
AI Agent 需要抓网页MCP Server 集成
需要绕过 Cloudflare 等反爬StealthyFetcher 开箱即用

生态与链接

总结

Scrapling 在 56k 星这个体量上,已经证明了它解决了真实痛点。其自适应解析器是当前开源爬虫框架中比较少见的创新——大部分框架的解法是”网站改了你自己改选择器”,Scrapling 的解法是”我帮你记住元素长什么样,你自己去找”。

其他功能(反爬绕过、并发爬取、MCP 集成)虽然各有同类竞品,但全部集成在一个库里、一条 pip install 搞定,这个打包策略降低了使用门槛。

对我来说,如果做一个需要长期运行的爬虫任务,adaptive 机制本身就值得优先考虑——省掉的不只是每次网站改版后的修代码时间,还有因为你没注意到改版而导致的静默数据损坏。

对比竞品:

版权所有,本作品采用知识共享署名-非商业性使用 3.0 未本地化版本许可协议进行许可。转载请注明出处:https://www.wangjun.dev//2026/06/scrapling-web-scraping-framework/