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

资讯详情

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

Scrapling 爬虫快速上手:从第一次请求到跑通完整采集流程

Scrapling 爬虫快速上手:从第一次请求到跑通完整采集流程 Scrapling 爬虫快速上手从第一次请求到跑通完整采集流程【免费下载链接】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请求发出去了拿回来的却是一页 403 验证墙或者拿回来的 HTML 里只有个空壳真正的数据是 JS 异步加载的你根本没抓到。更麻烦的是你写好的一套 CSS 选择器第二天网站换了版式就全部失效。写过爬虫的人大概都被这几件事卡过。Scrapling 是一个 Python 爬虫框架把三种请求方式放在同一套接口里Fetcher发纯 HTTP 请求带浏览器 TLS 指纹模拟速度最快DynamicFetcher驱动 Chromium 渲染 JS 页面StealthyFetcher在此基础上加反检测处理能自动过 Cloudflare 一类的挑战页。它的解析器还支持自适应模式页面改版后能靠相似度重新找到你之前选过的元素。适合想从公开网页采集数据、又不想自己维护 requests BeautifulSoup Playwright 三套东西的人。先判断你的场景适不适合 动手前先看这张表避免装错依赖、选错工具你的场景建议静态 HTML数据直接在源码里用Fetcher就够最快最省页面靠 JS 渲染SPA、异步加载换DynamicFetcher网站有 Cloudflare 等反爬StealthyFetcher(solve_cloudflareTrue)只解析现成的 HTML 或接口响应直接用Selector不必引入整个框架目标网站明确禁止爬取或需登录先确认授权和边界别硬爬发出第一个请求安装分两步装包含 fetcher 依赖再下载浏览器组件。pip install scrapling[fetchers] scrapling installscrapling install会下载 Chromium 和指纹处理依赖比较耗时如果只用Fetcher这步可以跳过。装完后这段最小可运行示例抓取 books.toscrape.com官方教程站第一页的书单打印书名和价格from scrapling.fetchers import Fetcher page Fetcher.get(https://books.toscrape.com/catalogue/) for book in page.css(article.product_pod): title book.css(h3 a::attr(title)).get() price book.css(p.price_color::text).get() print(title, |, price)运行后控制台会输出 20 行“书名 | 价格”说明请求到解析的链路已经通了。Fetcher.get默认 30 秒超时、失败重试 3 次并自动带上接近真实浏览器的请求头你不用手写 User-Agent。把页面变成结构化数据拿到的page对象本身就支持选择器不用再实例化额外的解析类。选元素有四条路CSS 选择器::attr(属性名)取属性、::text取文本、XPath、find_by_text按文字内容找新手最稳不依赖版式、find_similar从一个已知元素找出一整排同结构兄弟元素。具体写法看 元素查询与选择。如果目标网站以后可能改版第一次选元素时加auto_saveTrue把元素特征记下来之后选择器失效时改传adaptiveTrueScrapling 会按相似度在新版页面里重新定位原理和示例见 自适应解析。放大到多页采集写一个 Spider单页能跑通后真实任务往往有翻页。Scrapling 自带类似 Scrapy 的 Spider 框架你只需写start_urls和一个异步parse方法并发、限速、重试都由框架处理。这段示例把整个书单爬完并自动翻页结束后导出 CSVfrom scrapling.spiders import Spider, Response class BookSpider(Spider): name books start_urls [https://books.toscrape.com/catalogue/] async def parse(self, response: Response): for item in response.css(article.product_pod): yield {title: item.css(h3 a::attr(title)).get(), price: item.css(p.price_color::text).get()} next_url response.css(li.next a::attr(href)).get() if next_url: yield response.follow(next_url, callbackself.parse) result BookSpider().start() result.items.to_csv(books.csv)运行后终端会打印实时进度结束时输出统计信息当前目录多出一个books.csv。两个实用细节中途按 CtrlC 会优雅停止并保存检查点重跑自动从断点续传开发阶段可开启 dev mode把响应缓存到磁盘改解析逻辑时不必反复打目标站点。更多参数见 Spider 入门。失败的时候怎么办⚠️ 三类最常见的坏情况处理方式都有限超时把timeout调大浏览器类请求可加network_idleTrue等网络空闲后再返回避免内容还没加载完就去解析。被反爬拦住Fetcher返回 403 或验证页时别在请求头上继续纠结直接换StealthyFetcher遇到 Cloudflare 挑战页就加solve_cloudflareTrue它会在后台把验证流程走完再交还页面给你。选择器突然落空先确认页面没被重定向到验证页再用find_by_text按文字重新定位元素长期任务则交给 adaptive 模式兜底。踩坑速查表现象常见原因处理方式import 报ModuleNotFoundError只装了基础包pip install scrapling[fetchers]抓到的 HTML 里没有数据页面是 JS 渲染换DynamicFetcher返回 403 或验证页触发反爬StealthyFetchersolve_cloudflareTruecss()返回空网站改版find_by_text重定位或启用adaptive大规模采集频繁被限单 IP 触发限流加ProxyRotator或调低并发后面可能用到的进阶选项代理轮换ProxyRotator接一个代理列表即可逐请求轮换实际用了哪个代理记录在response.meta里方便追查。并发与限速Spider 的 AutoThrottle 会按目标站响应速度自动调延迟被限流时加倍放慢、恢复后再提速。指纹伪装hide_canvas给画布指纹加噪block_webrtc防止真实 IP 从 WebRTC 漏出去dns_over_https防 DNS 泄漏。直接抓接口响应给capture_xhr传一个 URL 模式页面自己发出的 XHR 请求会被原样收进response.captured_xhr省掉逆接口的功夫。各项参数的完整清单在 fetcher 选型对比 和 代理与封禁处理 里需要时按图索骥即可。最后说回适用边界目标是普通公开站点时从Fetcher加解析起步被拦了再升级到浏览器 fetcher任务量大、要翻页并发和断点续传时直接上 Spider。想深入就翻 官方文档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),仅供参考
返回列表