--- title: "01-爬虫是什么" created: 2026-04-24 tags: - 项目 aliases: - 第 1 讲:爬虫是什么 --- # 爬虫是什么 先用一句话说清楚: **爬虫就是一个自动帮你打开网页、读取数据、提取有用信息、保存起来的程序。** 它做的事情,本质上和人打开浏览器看网页差不多,只不过人是用眼睛看、手动复制;爬虫是用代码访问网页、自动提取。 --- ## 1. 先用一个生活化比喻理解 你打开招聘网站找职位,大概会这样: ```text 打开网站 ↓ 搜索关键词 ↓ 看到职位列表 ↓ 点开某个职位详情 ↓ 复制职位名称、公司、薪资、地点、描述 ↓ 保存到表格里 ``` 爬虫做的事情就是: ```text 用代码打开网站 ↓ 用代码搜索或翻页 ↓ 用代码读取职位列表 ↓ 用代码打开详情页 ↓ 用代码提取职位字段 ↓ 用代码保存成 JSON、Excel 或入库 ``` 所以爬虫不是神秘技术,它的核心就是: > **把人工浏览网页、复制数据的过程自动化。** 项目里,前程无忧、猎聘、鱼泡这些脚本,本质上都是围绕“自动打开职位列表、抓职位详情、保存并入库”这条链路在做增强。 ## 2. 浏览器打开网页时发生了什么? 要理解爬虫,必须先理解浏览器。 当你在浏览器输入一个网址,比如: ```text https://example.com/jobs ``` 浏览器背后大概做了这些事: 1. 浏览器向服务器发请求 2. 服务器返回内容 3. 浏览器解析内容 4. 浏览器把页面画出来 5. 页面中的 JavaScript 可能继续请求更多数据 6. 最终你看到完整页面 可以画成这样: ```text 你 / 浏览器 ↓ 请求 Request 网站服务器 ↓ 响应 Response 你 / 浏览器 ↓ 解析 HTML、CSS、JS、JSON 最终页面 ``` ## 3. 网页里到底有什么? 一个网页通常不是一个单独的东西,而是由几类内容组合出来的。 ### 3.1 HTML:网页骨架 HTML 决定页面上有什么内容。 比如: ```xml
薪资:15k-25k
地点:上海
``` 可以把 HTML 理解成网页的“骨架”。 ### 3.2 CSS:网页样式 CSS 决定页面长什么样。 比如字体大小、颜色、布局、按钮样式。 爬虫一般不关心 CSS,因为我们要的是数据,不是页面好不好看。 ### 3.3 JavaScript:网页动作 JavaScript 决定页面如何动起来。 比如: ```text 点击下一页 下拉加载更多 选择城市 选择学历 弹出详情 异步请求职位列表 ``` 很多现代网站不是一开始就把所有职位写在 HTML 里,而是先加载一个空页面,再由 JavaScript 请求职位数据。 这也是为什么有些网页你用简单代码抓不到内容。 ### 3.4 JSON:接口返回的数据 很多职位网站真正的数据,其实藏在接口返回的 JSON 里。 例如: ```json { "jobTitle": "数据分析师", "company": "某科技公司", "salary": "15k-25k", "city": "上海" } ``` JSON 对爬虫非常友好,因为它本身就是结构化数据。 猎聘爬虫就大量利用了这一点:列表页不是完全从页面文字里硬抠,而是监听猎聘返回的职位接口 JSON,再用职位详情页补充描述、地址、标签等字段。 ## 4. 爬虫和浏览器的区别 浏览器是给人看的。 爬虫是给程序用的。 | 对比项 | 浏览器 | 爬虫 | | --- | --- | --- | | 使用者 | 人 | 程序 | | 目的 | 展示网页 | 提取数据 | | 操作方式 | 点击、滚动、复制 | 请求、解析、保存 | | 结果 | 页面 | JSON、表格、数据库 | | 关注点 | 好不好看 | 数据准不准、全不全、稳不稳 | 所以爬虫不一定要“看到”完整页面。 如果能直接拿到接口 JSON,就不需要真的渲染网页。 但如果数据必须点击、滚动、登录、等待 JS 加载后才出现,就可能需要模拟浏览器。 ## 5. 最小爬虫模型 所有爬虫,无论简单还是复杂,本质都可以拆成五步: ```text 1. 请求 2. 获取 3. 解析 4. 提取 5. 保存 ``` 展开就是: ```text 给一个 URL ↓ 发送请求 ↓ 拿到网页 HTML 或接口 JSON ↓ 从里面找出目标数据 ↓ 保存到文件或数据库 ``` 比如抓职位,最小模型是: ```text 职位列表页 URL ↓ 请求列表页 ↓ 提取职位链接 ↓ 请求职位详情页 ↓ 提取职位名称、公司、薪资、地点、描述 ↓ 保存 ``` 参考的两个项目也是这个模型,只是复杂很多。 比如通用招聘采集系统在“获取”之后,还增加了 HTML 清洗、Markdown 转换、OCR、二维码识别、模型抽取、质控、上传等环节。 ## 6. 爬虫为什么能抓到数据? 因为网页数据最终要展示给用户。 只要浏览器能看到数据,理论上这些数据就一定以某种形式到达了你的电脑: 可能是: ```text HTML 里直接有 JSON 接口里有 JavaScript 渲染后才出现 图片里有 二维码里有 登录后接口里有 ``` 爬虫的任务就是找到它在哪里。 这句话很重要: > **爬虫不是“创造数据”,而是找到网页已经返回给浏览器的数据,然后提取出来。** ## 7. 为什么有些网页好抓,有些网页难抓? 因为数据出现的位置不同。 ### 第一种:HTML 里直接有数据 这种最好抓。 ```html