kp-001
爬虫全景与发展简史
本文基于模型知识整理,建议核对官方文档(见 参考资料)。
一句话定义
网络爬虫是按照既定规则自动、批量地获取网络数据的程序;它是数据挖掘管线的「燃料供应端」。
为什么重要
数据挖掘的一切结论都建立在数据之上,而公开互联网是最大的免费数据源。没有稳定、合规、可持续的采集能力,后续所有分析都是无米之炊。理解全景能帮你判断:一个需求到底该用 50 行脚本解决,还是要上一整套工程框架。
前置知识
无(本篇为零起点起点)。建议同时具备 Python 基础语法的概念级了解。
核心概念
- 定向爬虫:围绕明确目标(某网站的商品、评论)设计,小而精。
- 通用爬虫:如搜索引擎蜘蛛,广度优先遍历海量 URL,讲究抓取礼仪。
- 解析:把 HTML/JSON 变成结构化数据(字段化)。
- 调度与去重:决定「下一个抓谁、哪些抓过」。
- 反爬与对抗:目标方控制访问,采集方在合规前提下的工程应对。
- 数据管线:采集 → 清洗 → 存储 → 分析 → 报告。
原理与机制
爬虫的最小闭环由四步组成,任何框架都是这个闭环的工程化放大:
URL 队列 → 下载器(HTTP 请求) → 解析器(抽取字段+新URL) → 存储
↑____________________ 新 URL 回填队列 __________|
图示与公式
历史脉络(模型知识整理,供定位「我们现在在哪」):
| 阶段 | 时间 | 标志 |
|---|---|---|
| 起源 | 1993 | MIT Wanderer 统计 Web 规模 |
| 搜索引擎爬虫时代 | 1994–2005 | WebCrawler、Google PageRank 依赖大规模抓取 |
| 采集脚本时代 | 2005–2015 | Python requests + BeautifulSoup 普及,商业数据采集兴起 |
| 框架工程时代 | 2008 至今 | Scrapy(2008 开源)确立「框架化爬虫」范式 |
| 动态对抗时代 | 2015 至今 | SPA 普及、无头浏览器、风控与指纹 |
| 智能抽取时代 | 2023 至今 | LLM 辅助字段抽取,采集与解析边界重构 |
实例或案例
电商运营想跟踪 200 个竞品 SKU 的价格:这是典型定向爬虫场景——不需要搜索引擎级的遍历,只需要「列表页翻页 + 详情页字段 + 定时调度」,最终产出的时序价格表直接支撑定价决策(对应 kp-027)。
常见误区
- 误区一:爬虫 = 黑客技术。 爬虫本质是 HTTP 客户端的自动化,浏览器每天都在做同样的事;区别在规模、频率与用途,以及是否越过合规边界(见 kp-004)。
- 误区二:会调库就懂爬虫。 库只是下载器和解析器的封装;站点一变(动态渲染、接口加密、频控),不懂 HTTP 与渲染原理的人立刻无从下手。
- 误区三:先学框架。 不理解 kp-002/kp-003 的底层,Scrapy 的中间件、管道会像黑魔法。
自测题
- 定向爬虫与通用爬虫的核心差异是什么?
答:目标范围与策略——定向爬虫围绕固定站点做字段级抽取,通用爬虫为覆盖面做全站遍历,二者对队列、去重、礼仪的要求不同。
- 爬虫在数据挖掘管线中处于哪个位置?
答:最上游的数据供给端,决定后续清洗与分析的数据覆盖与质量上限。
- 2015 年前后爬虫技术的分水岭是什么?
答:SPA(单页应用)普及导致「拿 HTML 就有数据」失效,浏览器自动化与接口分析成为主流。
与其他知识点的关系
kp-002 讲下载器的底层协议;kp-004 是一切动手前的红线;kp-024 讲采集完成后如何进入挖掘;本篇是其余 36 篇的地图。
延伸阅读
Scrapy 官方文档的 FAQ 一节(对「为什么需要框架」回答得最好);本库 kp-004(合规边界)。