当前位置:首页>python>GitHub狂飙5万Star!这个Python爬虫框架会自愈,网站改版也不怕

GitHub狂飙5万Star!这个Python爬虫框架会自愈,网站改版也不怕

  • 2026-10-11 06:42:17
GitHub狂飙5万Star!这个Python爬虫框架会自愈,网站改版也不怕

大家好,我是小小。


写在前面

写过爬虫的都知道,最痛苦的不是写代码,而是维护。

你花两天写好的爬虫,跑得好好的,结果目标网站改了个版,CSS选择器全废了,又得重新来一遍。这种事我经历过太多次了。

昨天刷GitHub看到一个项目,star数已经5万多了,叫 Scrapling。

它主打一个功能:网页改版了,你的爬虫不用改。

我当时就想,这要是真的,那可太香了。


先说结论:它是真的

Scrapling 的核心能力就一句话:它的解析器会"记住"你选的元素长什么样,下次网页结构变了,它会自动找到新位置。

原理其实也不复杂。它会记录元素的文本内容、属性、层级关系这些特征,然后通过相似度算法去重新定位。不是简单地靠 CSS 选择器硬匹配。

from scrapling.fetchers import StealthyFetcher  p = StealthyFetcher.fetch('https://example.com', headless=True) products = p.css('.product', auto_save=True)  # 第一次保存特征  # 网站改版后,加上 adaptive=True 自动重定位 products = p.css('.product', adaptive=True) 

说实话这个功能我之前自己也想做过,但一直没有动手。看到有人做出来了,还是开源免费的,有点佩服。


不止是"自愈",反爬也给你解决了

现在的网站反爬越来越离谱了,Cloudflare Turnstile、各种指纹检测、行为分析...

之前我用 requests + BeautifulSoup 的组合,遇到 Cloudflare 保护的网站基本就投降了。要么换 Selenium,要么用 DrissionPage,要么花大价钱买代理服务。

Scrapling 自带几种 Fetcher:

  • Fetcher
    :普通 HTTP 请求,但可以模拟 Chrome 的 TLS 指纹和 HTTP/3
  • StealthyFetcher
    :隐身模式,开箱即用绕过 Cloudflare Turnstile
  • DynamicFetcher
    :完整浏览器自动化,支持 Playwright 的 Chromium 和 Google Chrome
from scrapling.fetchers import StealthyFetcher, StealthySession  # 一行代码搞定 Cloudflare with StealthySession(headless=True, solve_cloudflare=True) as session:     page = session.fetch('https://nopecha.com/demo/cloudflare')     data = page.css('#padded_content a').getall() 

我测试了一下,几个有 Cloudflare Turnstile 的测试网站确实都能直接过,不用额外配置。


大规模爬取也有完整方案

如果只是抓几个页面,requests + BeautifulSoup 确实够了。但要做大规模爬取,Scrapy 那套并发、代理轮换、断点续爬的机制就得搬出来了。

Scrapling 内置了类 Scrapy 的 Spider 框架,而且更灵活:

from scrapling.spiders import Spider, Response  class MySpider(Spider):     name = "demo"     start_urls = ["https://example.com/"]     concurrent_requests = 10      async def parse(self, response: Response):         for item in response.css('.product'):             yield {"title": item.css('h2::text').get()}         next_page = response.css('.next a')         if next_page:             yield response.follow(next_page[0].attrib['href'])  result = MySpider().start() 

几个我觉得挺实用的功能:

  • 断点续爬
    :Ctrl+C 优雅停止,下次从上次的位置继续
  • 多 Session 混用
    :同一个爬虫里,普通页面用快速 HTTP,有反爬的页面自动切到隐身浏览器
  • 实时 Streaming
    :async for item in spider.stream() 边爬边处理,不用等全部跑完
  • 自动代理轮换
    :内置 ProxyRotator,支持轮询和自定义策略
  • 开发模式
    :首次请求缓存到磁盘,后续直接读缓存,调试不浪费请求

速度也没掉队

很多人担心这种功能多的库会不会很慢,Scrapling 专门做了基准测试:

  • Scrapling: 2.02ms
  • Parsel/Scrapy: 2.04ms
  • Raw Lxml: 2.54ms
  • PyQuery: 24.17ms

解析速度跟 Scrapy 基本持平,比 PyQuery 快了 12 倍。而且它的 JSON 序列化比标准库快 10 倍。


适合什么人用

我觉得这几类人可以关注:

  1. 经常写爬虫但受够了维护的
    ——自适应元素定位能省大量时间
  2. 反爬绕不过去的
    ——Cloudflare Turnstile 开箱即用
  3. 从 requests + BS4 想升级的
    ——API 跟 Scrapy/Parsel 类似,迁移成本低
  4. 用 AI 做数据采集的
    ——自带 MCP Server,可以跟 Claude、Cursor 等 AI 工具配合使用

怎么安装

pip install scrapling 

Python 3.10 以上就行,不想装依赖的话有 Docker 镜像:

docker pull ghcr.io/d4vinci/scrapling:latest 

项目有完整的中文文档,从安装到高级用法都覆盖了,可以翻翻看。


结语

Scrapling 的作者 D4Vinci 是个比较低调的开发者,但这个项目的完成度确实高。92% 的测试覆盖率,完整的类型提示,支持 9 种语言的 README,还有 Discord 社区和专门的 X 账号。

从 2025 年初发布到现在一年多,star 数从零到 5 万多,说明它确实解决了真实痛点。

我自己目前还在用 DrissionPage 做主力爬虫框架,但 Scrapling 的自适应定位这个功能确实让我心动。等我找时间迁移几个项目试试效果,到时候再跟大家分享实战感受。

如果你有爬虫维护的痛苦经历,这个项目值得一看。

项目地址:https://github.com/D4Vinci/Scrapling


(觉得有用请点赞、收藏、转发三连!有问题评论区见~)

最新文章

随机文章