
告别反复改选择器Scrapling 爬虫指南【免费下载链接】Scrapling️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl! Dont 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 运行一个修改过的 ChromiumTLS 与 JS 指纹都伪装成真实浏览器传solve_cloudflareTrue即可通过验证拿到真实页面内容。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_saveTrue保存元素特征。之后站点改版、原选择器匹配不到时改传adaptiveTrue框架会拿已存特征与新页面对比重新定位到新节点。Fetcher.adaptive True # 开启自适应模式 page Fetcher.get(https://example.com/) items page.css(.product-card, auto_saveTrue) # 保存特征 # 站点改版后靠 adaptive 自动重定位 items page.css(.product-card, adaptiveTrue)绕过反爬的三级获取器Fetcher 基于 curl_cffi 发普通 HTTP可伪装成真实浏览器的 TLS 指纹静态页与 API 最快DynamicFetcher 用 Playwright Chromium 或系统 Chrome 跑页面执行完 JavaScript 再返回 DOM适配单页应用StealthyFetcher 伪装更深的真实浏览器solve_cloudflareTrue可过 Cloudflare Turnstile 验证适配高防护站点。更多取舍见获取器选择指南。FetcherDynamicFetcherStealthyFetcher静态页、APIJS 渲染页高防护站点curl_cffi 请求可伪装浏览器 TLS 指纹Playwright Chromium/Chrome 执行页面指纹伪装过 Cloudflare 验证爬虫框架并发、多会话与检查点concurrent_requests属性设置并发上限框架按域名节流避免把单个站点打爆。configure_sessions可在一个 Spider 里注册 HTTP 与隐身浏览器两类会话请求按sid路由到指定会话。构造 Spider 时传入crawldir即启用检查点CtrlC 保存进度用同一路径再启动会从断点恢复。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) # 导出 JSONstart_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 时传入crawldirCtrlC 会保存进度用同一目录再次启动即从断点恢复长任务不必从头再来。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保存特征改版后只需传adaptiveTrue自适应选择器机制会自动重定位也可用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! Dont 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),仅供参考