
Scrapling 完整指南一个 Python 库搞定静态请求、JS 渲染与 Cloudflare 反爬【免费下载链接】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项目地址: https://gitcode.com/GitHub_Trending/sc/ScraplingScrapling 是一个 Python 网页抓取框架它把普通 HTTP 请求、JavaScript 渲染、Cloudflare 人机验证这三类需求收进同一套 API发请求、选元素、跑批量爬虫都在一个库里完成不需要在多个工具之间来回切换。⏱️ 30 秒看懂 Scrapling选型先于安装。Scrapling 的定位是按页面难度分级的统一入口抓取层负责拿到内容解析层负责提取数据两层共用同一个返回对象。三个抓取器各对应一档页面难度抓取器适用页面类型是否启动浏览器典型代价Fetcher纯静态页目标内容直接写在 HTML 里否最低无需浏览器环境DynamicFetcher内容靠 JS 渲染生成是无头 Chromium每请求秒级含加载与等待StealthyFetcher带 Cloudflare 挑战或严格指纹检测的站点是反检测模式最高含挑战求解耗时三者返回同一类型的page对象并共享全部解析 API升级方案的代价只是换一个类名已写好的选择器代码不用动。逐项功能对照见 docs/fetching/choosing.md。 安装 Scrapling 与最小可运行示例环境要求 Python 3.10 及以上。从源码安装时两步都不可省pip install scrapling[fetchers]声明抓取器依赖scrapling install下载后两个抓取器所需的浏览器运行环境。git clone https://gitcode.com/GitHub_Trending/sc/Scrapling cd Scrapling pip install -e .[fetchers] scrapling install装好后用下面 4 行验证from scrapling.fetchers import Fetcher page Fetcher.get(https://example.com) print(page.status, page.get_all_text())page.status是 HTTP 状态码此处输出 200。示例里值得注意的一点返回的page本身就是解析器拿到 HTML 后可以直接用 CSS 或 XPath 选元素不必再转成 BeautifulSoup。常见的第一道坎是默认安装只带解析器——漏掉[fetchers]后缀时from scrapling.fetchers import Fetcher会直接报错补装依赖并执行scrapling install即可解决。 按页面难度逐级升级静态、渲染、隐身三级升级顺序是单向的先确认目标内容在 HTML 源码里再决定要不要加渲染最后才考虑反检测。静态页面TLS 指纹伪装请求什么时候升上来第一选择。多数列表页与详情页属于这一级无需浏览器响应在毫秒级。关键参数Fetcher底层基于curl_cffi默认伪装最新版 Chrome 的 TLS 指纹与请求头使请求在握手层就与真实浏览器一致impersonate可切换目标浏览器传chrome、firefox等字符串取该浏览器最新版也支持firefox102这类指定版本。from scrapling.fetchers import Fetcher page Fetcher.get(https://quotes.toscrape.com, impersonatechrome) print(page.css(.quote .text).get_all()[0])注意事项手动拼装请求头无法绕过 TLS 层检测握手特征与真实浏览器不一致时仍会被拦截impersonate解决的就是这一层。完整参数说明见 docs/fetching/static.md。JS 渲染页面无头浏览器加载什么时候升上来返回的 HTML 只是骨架、正文由前端脚本生成时改用DynamicFetcher它启动真实 Chromium渲染完成后再返回页面。关键参数network_idleTrue启用网络空闲阈值默认 500ms连接静默达标才返回wait_selector等待指定元素出现适合目标位置可预期的页面real_chromeTrue改用本机安装的 Chrome指纹更接近真实用户不传参数时以无头模式运行。from scrapling.fetchers import DynamicFetcher page DynamicFetcher.fetch(https://quotes.toscrape.com/js/, network_idleTrue) print(page.get_all_text())注意事项动态页取到的文本为空通常是 JS 尚未执行完就返回了。先加network_idleTrue仍缺失时改用wait_selector.target锚定关键元素。细节见 docs/fetching/dynamic.md。Cloudflare 挑战站点StealthyFetcher 反检测什么时候升上来目标站挂 Cloudflare 人机验证Turnstile / Interstitial 挑战或同时做 TLS 与浏览器指纹双重检测时使用StealthyFetcher。关键参数这是反检测选项最多的一档默认隐藏 Playwright 运行痕迹、对 canvas 输出加噪、封堵 WebRTC 泄漏solve_cloudflareTrue会自动识别并求解各类验证挑战通过后才把页面交给你。from scrapling.fetchers import StealthyFetcher page StealthyFetcher.fetch(https://target-site.com, solve_cloudflareTrue) print(page.status)注意事项屏蔽广告域、走代理、时区伪装等其余反检测项也集中在这个类里配置前先查 docs/fetching/stealthy.md 的完整清单。️ 稳定性与规模化从单次实验到批量任务任务从单次请求变成批量抓取后关注点从拿得到转为跑得久、断了能续自适应选择器抗改版关键元素首次抓取时用auto_saveTrue保存内容特征站点改版后用adaptiveTrue按特征重新定位不必重建整套选择器products page.css(.product, auto_saveTrue) # 首次抓取保存特征 products page.css(.product, adaptiveTrue) # 改版后按特征重新找存储与定位原理见 docs/development/adaptive_storage_system.md。Session 复用浏览器批量场景用StealthySession等 Session 版抓取器替代单次 fetch浏览器只启动一次后续请求全部复用同一进程。限速与代理轮询内置 scrapling/spiders/throttle.py 控制请求节奏代理轮询模块把流量分散到多个出口 IP提高并发也不易触发限频或封禁。断点续抓Spider 框架记录抓取进度任务中断后从断点恢复长任务无需从头再来架构细节见 docs/spiders/architecture.md。✅ 合规清单与速查启动任务前核对两件事robots.txt先确认目标路径是否允许抓取框架内置 scrapling/spiders/robotstxt.py爬虫可自动检查协议。频率控制抓取节奏与目标站承受能力匹配仅采集公开可访问的数据。拿不准该用哪一档时按顺序自问三个问题目标内容在 HTML 源码里吗在Fetcher即可。需要等 JS 渲染出内容吗需要换DynamicFetcher并配network_idle或wait_selector。有人机验证挑战吗有上StealthyFetcher并开启solve_cloudflareTrue。三个问题由易到难第一个给出肯定答案的那一档就是当前任务需要的方案。【免费下载链接】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项目地址: https://gitcode.com/GitHub_Trending/sc/Scrapling创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考