news 2026/10/13 2:22:11

告别反复改选择器:Scrapling 爬虫指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
告别反复改选择器:Scrapling 爬虫指南

告别反复改选择器:Scrapling 爬虫指南

【免费下载链接】Scrapling🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl! Don't be shy, join here: https://discord.gg/EMgGbDceNQ and follow here for daily tips and tricks: https://x.com/Scrapling_dev项目地址: https://gitcode.com/GitHub_Trending/sc/Scrapling

上线爬虫的第二天,站点改版,所有精心写的选择器全部失效,只能重头排查 HTML。Scrapling 是一个 Python 网页抓取框架,抓取时把元素特征存下来,站点改版后自动重新定位,选择器只写一次。

它替你解决哪三类麻烦

站点结构频繁变化。写好的选择器在站点改版当天就会失效。Scrapling 的自适应解析在首次抓取时保存元素特征,改版后重新抓取页面时,框架用相似度算法把同一位置的节点找回来,不需要重查 HTML。

反爬封禁。Cloudflare Turnstile 会对带浏览器指纹的请求返回验证页。StealthyFetcher 运行一个修改过的 Chromium,TLS 与 JS 指纹都伪装成真实浏览器,传solve_cloudflare=True即可通过验证,拿到真实页面内容。

JS 渲染与大规模内存压力。单页应用的内容在初始 HTML 里是空的,DynamicFetcher 用真实浏览器执行完 JavaScript 后才返回最终 DOM;大规模爬取时,Spider 框架以流式输出条目,内存里只保留当前页面,不会把每一页都堆在 RAM 里。

🚀 五分钟上手

Scrapling 要求 Python 3.10 及以上,一次性装齐全部依赖;装完再执行一次安装命令,下载浏览器及其系统依赖(浏览器类获取器需要,仅需一次):

pip install "scrapling[all]" scrapling install # 下载浏览器及系统依赖

六行代码就能跑通一次完整抓取,向示例站点发请求并提取全部引语:

from scrapling.fetchers import Fetcher page = Fetcher.get("https://quotes.toscrape.com/") # 发一次请求 quotes = page.css(".quote .text::text").getall() # 全部引语文本 authors = page.css(".quote .author::text").getall() # 全部作者 print(f"{len(quotes)} quotes")

Fetcher.get()返回页面对象,.css()用 CSS 选择器取元素,::text伪元素用于取纯文本,.getall()把匹配结果收成列表。对刚接触 Python 爬虫的人,这一段就是"请求→解析→输出"的完整循环;只抓静态页时,pip install scrapling即可,无需装浏览器。

三大核心能力

自适应解析:站点改版后元素自我重新定位

开启 adaptive 后首次抓取,用auto_save=True保存元素特征。之后站点改版、原选择器匹配不到时,改传adaptive=True,框架会拿已存特征与新页面对比,重新定位到新节点。

Fetcher.adaptive = True # 开启自适应模式 page = Fetcher.get("https://example.com/") items = page.css(".product-card", auto_save=True) # 保存特征 # 站点改版后,靠 adaptive 自动重定位 items = page.css(".product-card", adaptive=True)

绕过反爬的三级获取器

Fetcher 基于 curl_cffi 发普通 HTTP,可伪装成真实浏览器的 TLS 指纹,静态页与 API 最快;DynamicFetcher 用 Playwright Chromium 或系统 Chrome 跑页面,执行完 JavaScript 再返回 DOM,适配单页应用;StealthyFetcher 伪装更深的真实浏览器,solve_cloudflare=True可过 Cloudflare Turnstile 验证,适配高防护站点。更多取舍见获取器选择指南。

FetcherDynamicFetcherStealthyFetcher
静态页、APIJS 渲染页高防护站点
curl_cffi 请求,可伪装浏览器 TLS 指纹Playwright Chromium/Chrome 执行页面指纹伪装,过 Cloudflare 验证

爬虫框架:并发、多会话与检查点

concurrent_requests属性设置并发上限,框架按域名节流,避免把单个站点打爆。configure_sessions可在一个 Spider 里注册 HTTP 与隐身浏览器两类会话,请求按sid路由到指定会话。构造 Spider 时传入crawldir即启用检查点:Ctrl+C 保存进度,用同一路径再启动会从断点恢复。async for item in spider.stream()逐条流式产出结果,适合接管道或长时任务。

跟做一遍:一次完整抓取任务

如何把前面的能力拼成实际任务?以抓取引语列表页为例,Spider 框架用一个类串起请求、解析与批量输出:

from scrapling.spiders import Spider, Response class QuotesSpider(Spider): name = "quotes" start_urls = ["https://quotes.toscrape.com/"] concurrent_requests = 5 # 并发数 async def parse(self, response: Response): for quote in response.css(".quote"): yield {"text": quote.css(".text::text").get(), "author": quote.css(".author::text").get()} # 收集 next_page = response.css(".next a") if next_page: # 跟随下一页 yield response.follow(next_page[0].attrib["href"]) result = QuotesSpider().start() result.items.to_json("quotes.json") # 导出 JSON

start_urls决定入口页,异步parse回调解析每个响应:yield 字典即收集一条数据,yield follow 即沿"下一页"链接继续。start()返回后,全部结果在result.items里,除 JSON 外也支持 CSV、XML 等导出格式,细节见爬虫框架指南。

🧰 进阶要点清单

异步并发。AsyncFetcher.get()返回协程,可用asyncio.gather并行发请求;浏览器获取器有对应的异步会话(如AsyncStealthySession),内部自己管理页面池,不用手写连接管理。

代理轮换。把多个代理放进ProxyRotator,每次新请求按循环策略依次取用,也可传入自定义策略函数;所有会话类型都支持,单个请求还能用自己的代理覆盖。

from scrapling.engines.toolbelt.proxy_rotation import ProxyRotator rotator = ProxyRotator(["http://p1:8080", "http://p2:8080"]) # 循环取用

断点续爬。构造 Spider 时传入crawldir,Ctrl+C 会保存进度;用同一目录再次启动即从断点恢复,长任务不必从头再来。

CLI 免代码测试选择器。extract子命令让终端直接抓页:scrapling extract get 'URL' out.md,配合--css-selector可只取指定范围,详见CLI 命令参考;scrapling shell交互外壳还能把现成的 curl 命令转成请求,方便调试。

MCP 与 AI 工具集成。pip install "scrapling[ai]"后,Claude、Cursor 等工具可通过 MCP 服务器调用 Scrapling 的抓取与解析能力,页面会先按选择器裁剪再进入上下文,详见MCP 服务器文档。

⚠️ 踩坑指南

问:浏览器驱动安装失败怎么办?答:执行scrapling install重新下载浏览器及系统依赖;Linux 上失败可加--force强制重装。

问:如何提升抓取速度?答:静态站直接用Fetcher,省去浏览器开销,再配AsyncFetcher并发;浏览器获取器可用disable_resources丢弃图片、字体等资源提速。

问:选择器突然失效怎么办?答:事先开启 adaptive 并用auto_save保存特征,改版后只需传adaptive=True,自适应选择器机制会自动重定位;也可用find_similar查找相似节点。

问:大页面内存占用高怎么办?答:不要囤积 Response 对象,取完即弃;改用 Spider 框架的stream()流式输出,内存不会随页面数量累积。

这套框架把元素重定位、浏览器伪装、大规模爬取收进同一个库,从单个请求到完整爬虫都能用同一套 API 写出来。网页抓取时请先查看目标站的 robots.txt,并把请求频率控制在合理范围,避免给目标服务器带来压力。

【免费下载链接】Scrapling🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl! Don't be shy, join here: https://discord.gg/EMgGbDceNQ and follow here for daily tips and tricks: https://x.com/Scrapling_dev项目地址: https://gitcode.com/GitHub_Trending/sc/Scrapling

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/13 2:21:27

RISC-V IDE MRS使用笔记(十四):用户反馈功能

RISC-V IDE MRS使用笔记(十四):用户反馈功能 今天给大家带来MRS用户反馈功能的分享,开发者们可以通过该功能向MRS技术支持提交:MRS相关操作咨询、改进建议或嵌入式开发中遇到的问题,用户也可以将上述内容直…

作者头像 李华
网站建设 2026/10/13 2:19:34

用Excel制作标准波士顿矩阵图:散点图与误差线实战教程

Excel波士顿矩阵图一直是商业分析里的高频需求,几乎每份战略汇报PPT里都会出现一张。但真正能用手头Excel做出来的人,说实话不多——大多数教程要么只讲原理不讲操作,要么上来就让你装各种插件,最离谱的是直接让你画个四宫格填颜色…

作者头像 李华
网站建设 2026/10/13 2:18:54

定量分析与定性分析

定量分析与定性分析 1、定量分析核心逻辑:将现象转化为可测量的变量,通过统计或数学模型检验假设、发现规律典型特征数据形式:数值、量表、频次、比例样本通常较大,追求代表性强调可重复性、客观性、因果推断常用工具:…

作者头像 李华
网站建设 2026/10/13 2:18:41

汽车零部件厂飞书协同落地:从产线断点出发的选型方法论

1. 为什么汽车零部件厂选飞书服务商,不能只看“本地有办公室”?“上海飞书服务商怎么选?”——这个问题在长三角汽车产业集群里,最近半年被某主机厂供应链总监在三次闭门会上反复抛出。他不是在问“哪家报价低”,而是在…

作者头像 李华
网站建设 2026/10/13 2:18:11

期货量化软件上手难度排行:从零代码到CTP自研全解析

做期货量化这几年,被问得最多的不是"什么策略管用",而是"我该从哪款期货量化软件下手"。这个问题看着简单,其实特别难回答,因为上手难度的跨度实在太大了——有人连编程都没碰过,一上来就想跑实盘…

作者头像 李华