采集限速与合规:别把对方站点打挂
并发不是越高越好。从单站限速、退避重试、缓存复用三个角度,聊聊怎么在不打扰对方服务的前提下把数据拿全。
这里记录我在数据采集项目里踩过的坑:代理怎么选、代理池怎么设计、Scrapy 中间件怎么写、遇到 407 和 406 从哪儿查起。每篇都尽量给出能直接跑的代码,而不是停在概念上。
并发不是越高越好。从单站限速、退避重试、缓存复用三个角度,聊聊怎么在不打扰对方服务的前提下把数据拿全。
下载中间件的两个钩子各管什么、重试为什么没换 IP、为什么失败请求反而变多了——一个生产可用的中间件写法。
这几个状态码来自不同环节,含义完全不一样。一张排查表 + 对应处置方式,帮你少走弯路。
为什么不能循环单条提取、低水位补货怎么算、失效 IP 怎么剔除、单 IP 该给多少并发。含可直接运行的本地池子代码。
绝对 URL 和 CONNECT 隧道差在哪里、HTTPS 为什么必须先握手、白名单和账号密码两种认证各自适用什么场景。
关于代码:文章里的示例我都整理成了可运行版本,覆盖 Python / Node.js / TypeScript / Java / Kotlin / Scala / C# / VB.NET / Go / PHP / Ruby / Perl / Rust / Swift / Dart / C++ / Shell / PowerShell 共 18 种语言,放在 github-xydaili-examples 仓库里,每种语言都演示「提取 IP → 走代理访问 → 失败换 IP 重试」这条完整链路。