尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

Scrapling 网页抓取快速上手指南:3 行代码从单页请求到整站爬取

Scrapling 网页抓取快速上手指南:3 行代码从单页请求到整站爬取 Scrapling 网页抓取快速上手指南3 行代码从单页请求到整站爬取【免费下载链接】Scrapling️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl!项目地址: https://gitcode.com/GitHub_Trending/sc/ScraplingScrapling 是一个 Python 网页抓取框架从单个 HTTP 请求到整站爬取都能覆盖解析器会记住选择器页面改版后仍能自动定位元素抓取器自带浏览器指纹伪装与反检测处理。下面按安装验证、取数、过反爬、应对改版、放大到整站爬取这条主线走一遍最后收掉新手最常踩的几个坑。一条命令装好并验证官方要求 Python 3.10 以上。基础安装只包含解析引擎pip install scrapling python -c import scrapling; print(scrapling.__version__)要真正抓网页还需要安装 Fetcher 组件并下载浏览器pip install scrapling[fetchers] scrapling install也可以从源码安装克隆仓库仓库地址https://gitcode.com/GitHub_Trending/sc/Scrapling 后执行pip install -e .。注意scrapling install是最常被漏掉的一步它负责下载浏览器及系统依赖忘了执行是 StealthyFetcher 起不来的头号原因。只解析本地 HTML如果只想解析已经下载好的 HTML 文件上面第一条命令就够了不需要装 fetchers。3 行代码拿到第一份数据核心机制一句话抓取返回的Response对象本身就是Selector抓完直接写 CSS 选择器。from scrapling.fetchers import Fetcher page Fetcher.get(https://quotes.toscrape.com) quotes [q.css_first(span.text::text).get() for q in page.css(.quote)] print(quotes[:3], page.status)Fetcher基于 curl_cffi 发纯 HTTP 请求不起浏览器是速度最快的一档。它默认模仿真实浏览器的 TLS 指纹并生成真实请求头很多会拦截脚本请求的站点在这里就能直接通过。需要带登录态、连续多次请求复用 cookie 时改用FetcherSession会话内共享 cookie 和连接池单次请求还能单独覆盖配置。目标是 JSON 接口怎么办少写一行就能接住page Fetcher.get(https://api.github.com/events) print(page.json())页面靠 JS 渲染或有反爬怎么办目标内容要等脚本执行后才出现或者站点挂着 Cloudflare 这类挑战时升级到浏览器抓取器from scrapling.fetchers import StealthyFetcher page StealthyFetcher.fetch(https://protected-site.com, headlessTrue) print(page.css_first(h1::text).get())两档浏览器抓取器怎么选DynamicFetcher是普通 Chromium/Chrome 自动化适合轻量 JS 渲染页StealthyFetcher是强化版自动处理 Cloudflare Turnstile/Interstitial、WebRTC 泄漏、canvas 指纹、headless 检测等向量。headless默认为 True调试阶段想观察浏览器行为时改成 False 即可。从浏览器复制请求参数如果 Chrome 里已经打开了目标页面可以在开发者工具里把请求复制成 curl 命令再把关键参数header、cookie转给 fetcher另可选装pip install scrapling[shell]获得scrapling shell交互式抓取环境调试选择器时很方便。网站改版后选择器如何不失效这是 Scrapling 的招牌能力——自适应解析。第一次选中元素时加auto_saveTrue保存其特征站点改版导致选择器失配后同一次选择加adaptiveTrue它会按相似度找出对应元素纯本地计算不用 AIfrom scrapling import Selector page Selector(html, adaptiveTrue, urlexample.com) el page.css(#p1, auto_saveTrue) # 第一次记录元素特征 if not el: el page.css(#p1, adaptiveTrue) # 改版后自动重新定位对 fetcher 全局开启只需在请求前写一行Fetcher.adaptive True。长期挂在定时任务上的爬虫最该开这个——站点前端改一次 class 名管道不至于直接停摆。从单页放大到整站爬取规模从一个页面变成整个站点后自己写请求循环很快会变得繁琐并发、限速、代理轮换、断点续传都要管。spiders 模块把这些收进爬虫引擎只声明起始地址和解析回调即可from scrapling.spiders import Spider, Response class QuoteSpider(Spider): name quotes start_urls [https://quotes.toscrape.com/] async def parse(self, response: Response): for item in response.css(.quote): yield {text: item.css_first(span.text::text).get()} QuoteSpider().start()Checkpoint 机制支持断点续爬任务中途被中断下次从最后一个检查点继续不用从头再来最容易踩的三个坑import scrapling.fetchers 报 ModuleNotFoundError基础包不含 fetcher。先执行pip install scrapling[fetchers]再跑一次scrapling install。StealthyFetcher 打不开浏览器九成是浏览器依赖没下载重跑scrapling install环境异常时加--force强制重装。返回 200 但选择器取不到东西先看page.status403 说明请求层被拦换浏览器抓取器200 但取不到多半是内容靠 JS 渲染同样需要 DynamicFetcher 或 StealthyFetcher。下一步把示例里的 quotes.toscrape.com 换成实际目标站点先用最快的Fetcher跑一遍卡在哪一层就按上面升一档抓取器。【免费下载链接】Scrapling️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl!项目地址: https://gitcode.com/GitHub_Trending/sc/Scrapling创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表