拓冰建站拓冰建站
首页 / 资讯中心 / 正文

Scrapling 实战:3 个抓取器覆盖静态页、JS 渲染和 Cloudflare 验证

Scrapling 实战3 个抓取器覆盖静态页、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 请求、JS 渲染页面、Cloudflare 验证绕过收进一个库。一行代码发请求拿回的响应对象直接选元素批量爬虫引擎也一并给你。选型三个抓取器一张表Scrapling 把抓取器分成三档分别对应不同难度的页面。低档打不过就升一档API 写法保持一致迁移成本几乎为零。抓取器适合什么页面关键参数典型调用Fetcher纯静态页内容全在 HTML 里impersonate默认最新版 Chrome、proxy、retriesFetcher.get(https://books.toscrape.com)DynamicFetcherJS 渲染、动态加载的页面network_idle、wait_selector、headless、real_chromeDynamicFetcher.fetch(url, network_idleTrue)StealthyFetcher强反爬、带 Cloudflare 验证的页面solve_cloudflare、block_webrtc、hide_canvasStealthyFetcher.fetch(url, solve_cloudflareTrue)一句话的决策规则先用Fetcher试拿到空壳就上DynamicFetcher出现验证页或直接 403 才动StealthyFetcher。⚡ 安装与第一个请求要求 Python 3.10 以上。装完再跑一条命令把浏览器运行环境下载到本地pip install scrapling[fetchers] scrapling install第一条装解析器和抓取器依赖第二条下载浏览器环境。然后三行发出第一个请求from scrapling.fetchers import Fetcher page Fetcher.get(https://books.toscrape.com) print(page.status, page.get_all_text()[:60])page.status就是 HTTP 状态码成功时是 200。更关键的是page自带解析能力CSS 和 XPath 直接写在它上面不用转手给别的解析库。 按页面类型选方案内容全在 HTML 里直接发 HTTP 最快列表页、详情页大多是静态的。Fetcher底层是 curl_cffi默认按最新版 Chrome 的 TLS 指纹发请求不开浏览器速度最快。from scrapling.fetchers import Fetcher page Fetcher.get(https://books.toscrape.com) prices page.css(.product .price_color).get_all() print(page.status, prices[:3])这段在抓书名旁边的价格列表。如果站点认出了指纹可以传impersonatefirefox或chrome110换一种握手伪装完整参数清单见 docs/fetching/static.md。文本是空的等页面加载完再返回页面内容靠前端脚本生成时Fetcher只能拿到半成品的框架。换DynamicFetcher它开真实 ChromiumJS 跑完才把页面交给你。from scrapling.fetchers import DynamicFetcher page DynamicFetcher.fetch(https://quotes.toscrape.com/js-delayed/, network_idleTrue) print(page.status) print(page.get_all_text()[:100])network_idleTrue让它在页面 500 毫秒内没有新网络活动之前不返回也可以传wait_selector.quote等某个元素出现。浏览器默认无头模式real_chromeTrue换成本机 Chrome指纹更接近真人。卡在 Cloudflare 验证交给自动求解器遇到验证一下你是不是机器人的挑战页上StealthyFetcher。它默认藏掉 Playwright 的痕迹canvas 加噪WebRTC 泄漏也堵上了solve_cloudflareTrue会自动识别并解掉挑战过了才返回。from scrapling.fetchers import StealthyFetcher page StealthyFetcher.fetch( https://nopecha.com/demo/cloudflare, solve_cloudflareTrue, timeout60000, ) print(page.status)求解需要时间超时建议至少 60 秒。屏蔽广告域、走代理、时区伪装等更多反检测选项完整列表见 docs/fetching/stealthy.md。从单次请求到批量任务生产上不会一页一页抓。FetcherSession、DynamicSession、StealthySession这些 Session 版抓取器把浏览器保活第二个请求起全部走同一个实例省掉反复启停的开销。量大时给请求配限速spiders 包里的 throttle 模块再用ProxyRotator轮换代理并发上去也不会把目标站惹毛。长任务交给 Spider 框架它支持断点续抓中途断了接着跑不用从头再来。开抓前记得看目标站的 robots.txt控制频率只碰公开页面。排错清单三个高频问题现象from scrapling.fetchers import Fetcher直接报导入错误。原因默认装进来只有解析器fetchers 依赖没装。修复pip install scrapling[fetchers]再执行scrapling install。现象状态码正常但提取出来的文本是空的只剩框架。原因JS 还没跑完页面就提前返回了。修复请求参数里加network_idleTrue或传wait_selector.目标元素等它出现。现象站点改版后原来好用的选择器集体取不到东西。原因选择器写死了页面结构变了。修复先把抓取器切到自适应模式如Fetcher.configure(adaptiveTrue)抓取时用css(selector, auto_saveTrue)存下特征改版后改成css(selector, adaptiveTrue)按特征重新定位原理见 docs/development/adaptive_storage_system.md。今天就做的一件事挑一个你手头最难的页面三行代码验证内容在不在 HTML 里Fetcher.get能拿到就用它拿不到再逐级升到DynamicFetcher、StealthyFetcher。【免费下载链接】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),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门