第3章 · 候车大厅:调度器、去重与配置 本章要回答的三个问题:框架凭什么保证同一张地址只下载一次,重复票是在哪一步被拦下的?上百个配置项里,哪些真正决定了爬虫的行为边界?Spider 之外的事件——开关、异常、统计——框架通过什么机制通知你? 为什么会有这一章 第 2 章结束时,你的车票已经能循环出生、到站、续票。但你可能没意识到一个问题:那些续出来的票,全都被悄悄查过一遍身份证——同一地址第二次排队时,框架直接拒收。这套机制发生在候车大厅,也就是调度器与去重过滤器的地盘。对它们的认知空白,是大多数爬虫诡异问题的根源:为什么这个页面明明删了旧版还是抓不到?为什么优先级设了像没设?为什么重启之后旧请求全回来了? 本章同时解决另一个隐疾:配置意识的缺席。
本章要回答的三个问题:框架凭什么保证同一张地址只下载一次,重复票是在哪一步被拦下的?上百个配置项里,哪些真正决定了爬虫的行为边界?Spider 之外的事件——开关、异常、统计——框架通过什么机制通知你?
第 2 章结束时,你的车票已经能循环出生、到站、续票。但你可能没意识到一个问题:那些续出来的票,全都被悄悄查过一遍身份证——同一地址第二次排队时,框架直接拒收。这套机制发生在候车大厅,也就是调度器与去重过滤器的地盘。对它们的认知空白,是大多数爬虫诡异问题的根源:为什么这个页面明明删了旧版还是抓不到?为什么优先级设了像没设?为什么重启之后旧请求全回来了?
本章同时解决另一个隐疾:配置意识的缺席。第 1 章你见过 settings 模块是"总花名册",但当时只用了装配数字。这一章把真正日常的三组配置——并发与限速、去重与礼貌、日志与统计——逐组讲透。配置调不好,前面的代码写得再好也白搭:要么被目标站封禁,要么慢到失去采集意义。
信号系统放在本章末尾还有一层用意:它是框架机制的"公开广播频道"。候车、发车、到站、关闭,每个旅程节点都有对应信号可订阅。理解了双程动线上的这些节点(第 1 章的架构图此时该能默画了),信号的用途便水到渠成——它是你给框架行为打补丁的正规入口。
| 节 | 回答哪个问题 | 关键产出 |
|---|---|---|
| 3.1 调度器与去重指纹 | 排队与查重的内部机制 | 队列选型、指纹机制、放行决策 |
| 3.2 Settings 全局配置 | 行为边界在哪配置 | 三组核心参数的调法与取舍 |
| 3.3 Signals 信号系统 | 事件怎么广播订阅 | 挂在旅程节点上的钩子 |
三节共享一个认知底座:框架的默认行为都写在配置里,配置的每个键都对应旅程上的一个决策点。3.1 讲"决策点在哪",3.2 讲"怎么拨",3.3 讲"怎么监听"。
本章全部发生在请求"还没发出去"的阶段。下一章车票真正上路:穿过下行隧道的中间件关卡,接受改头、换代理、限速与重试的处置。3.2 节配置的那些开关,届时会一一被点亮;而 3.1 节里"被拒收的票"若有冤情,翻案工具也在第 4 章的中间件里。