
9.3 万星的爬虫库悄悄换了内核:一次请求到整站抓取都在同一个包里
Scrapling v0.5 是个破坏性大版本:Scrapy 风格爬虫、Cloudflare 绕行、自适应元素追踪、重写的 MCP server 与整站 Markdown 输出收进一个 Python 库,解析基准比 BS4 快三个数量级。
相关标签
9.3 万星的爬虫库悄悄换了内核:一次请求到整站抓取都在同一个包里
Python 爬虫生态长期是拼装式的:抓页面用 requests 或 httpx,绕反爬换 curl_cffi,渲染 JS 上 Playwright,解析交给 BeautifulSoup 或 lxml,整站爬取再引入 Scrapy。四个环节、四套 API、四种错误处理。
Scrapling 想把这些收进一个库。昨日它新增 706 星,总星数 92,987,v0.5 在 10 月 17 日发布,作者在发布说明里直接写了三个字:破坏性变更。迁移指南单独开了一页。
四层能力,一套接口
取。Fetcher 走 HTTP,能伪装浏览器 TLS 指纹、请求头,支持 HTTP/3;StealthyFetcher 用 Playwright 驱动的 Chromium 或本机 Chrome 做完整浏览器自动化,README 的说法是可以绕过 Cloudflare 的 Turnstile / Interstitial 各类挑战。会话是持久化的,FetcherSession 与 StealthySession 管理 cookie 与状态,ProxyRotator 支持轮换代理,还能按域名屏蔽请求、开内建广告拦截(约 3,500 个已知广告与追踪域名)、走 DoH 防止 DNS 泄漏,或直接 cdp_url 连到远端浏览器。
解析。CSS、XPath、文本搜索、正则搜索都在,另加两个别处少见的能力:元素相似度匹配(找到与目标”长得很像”的元素),以及自适应元素追踪——网站改版后,靠相似度算法把元素重新定位回来。
爬。Spider API 与 Scrapy 高度相似:start_urls、异步 parse、Request/Response 对象。并发上限、按域名限速、crawldir 断点续爬(Ctrl+C 优雅退出后从同一目录继续)、spider.stream() 流式产出,以及一个自己不猜延迟的 AutoThrottle——按站点响应速度自动调速,被限流时按 Retry-After 或直接翻倍等待。模板覆盖 CrawlSpider、SitemapSpider、XMLFeedSpider、CSVFeedSpider,还有一个专门收公开 Shopify 店铺商品的 ShopifySpider。导出 JSON / JSONL / CSV / XML 一行搞定。
喂给 AI。page.markdown() 把任意页面转成干净的、已清洗的 Markdown,官方给了 ContentSpider 模板,可以把整站爬成一份 Markdown 语料;v0.5 重写了 MCP server,让 Agent 能填表单、点击、滚动、跑自定义 JS、截元素级图、读网络请求、保存并复用登录状态,还支持穿透 open 与 closed Shadow DOM。
性能数字:赢在解析器
README 给了两组基准。5000 个嵌套元素的文本提取,Scrapling 1.99 ms,Parsel/Scrapy 2.06 ms,裸 lxml 2.56 ms,PyQuery 23.98 ms,BS4 + lxml 1562.1 ms,BS4 + html5lib 3412.73 ms——最慢的一档比它慢约 1714 倍。元素相似度与文本搜索,Scrapling 2.3 ms,AutoScraper 12.58 ms。项目声明这些是 100 次以上运行的平均值,方法脚本在仓库里。
工程质量上,README 写的是 92% 测试覆盖率、完整类型标注,代码每次改动都过 PyRight 与 MyPy。
上手
pip install scrapling
注意这条命令只装解析引擎。要用 fetchers 或 spiders,得按文档再装可选依赖和浏览器组件——这是最常见的一个坑,ModuleNotFoundError 基本都是这个原因。需要 Python 3.10 以上。官方每次发布还会自动构建一个打包了全部浏览器的 Docker 镜像。
如果你已经在用 Scrapy,项目留了一个折中方案:给回调函数加上 scrapling_response 装饰器,就能用 Scrapling 的解析器处理已有的响应,不必重写整个爬虫。
一点必要的提醒
Scrapling 把”绕过反爬”做成了开箱能力,这也是它争议最大的地方。项目 README 提供了 robots_txt_obey 开关,会遵守 Disallow、Crawl-delay、Request-rate,按域名缓存——但它是可选开关,默认不开。抓取目标站点的条款与当地法规,仍然是用的人自己负责。
更多资讯
想看更多优质内容?
浏览所有资讯