一、爬虫的概念
1.1 什么是爬虫?
网络爬虫(又称为网页蜘蛛,网络机器人)就是模拟客户端(主要指浏览器),发送网络请求,接收请求响应,一种按照一定规则,自动抓取互联网数据的程序。
- 原则上,只要是客户端(浏览器)的事情,爬虫都能够做。
- 爬虫也只能获取客户端(浏览器)所展示出来的数据。
简而言之,爬虫就是模拟客户端,发送请求,获取响应。
1.2 爬虫的作用
爬虫在互联网世界中有很多作用。
1.2.1 数据采集
- 抓取微博评论(机器学习与舆情监控)
- 抓取招聘网站的招聘信息(数据分析、挖掘)
- 新浪滚动新闻
- 百度新闻网站
1.2.2 软件测试
- 爬虫之自动化测试
- 虫师
1.2.3 12306抢票
1.2.4 网络上的投票
- 投票网
1.2.5 网络安全
-
短信轰炸
-
web页面漏洞检查
二、爬虫的分类
2.1 根据被爬网站数量的不同
- 通用爬虫:如:搜索引擎
- 聚焦爬虫:例如12306抢票软件
2.2 根据是否以获取数据为目的
- 功能性爬虫:给你喜欢的明星点赞,投票
- 数据增量爬虫:比如招聘信息。
2.3 根据URL和对应的页面内容是否改变,数据增量爬虫可以分为:
- 基于URL变化,内容也随之变化的数据增量爬虫
- URL不变,内容变化的数据增量爬虫。流入:页面的浏览次数统计
三、爬虫的流程

- 获取URL
- 向URL发送请求,并且获取响应数据(需要http请求)
- 如果从响应中获取URL,则继续发送请求获取数据
- 如果从响应中提取数据,则进行数据保存。
四、http协议复习
4.1 http和https概念
https比http更安全,但是性能低一些。
- HTTP是超文本传输协议,默认端口80
超文本:是指超过文本,不仅限于文本,还包括图片、音频、视频等文件;
输出协议:是指使用共同约定的固定格式来传输转换为字符串的超文本内容。
- HTTPS:HTTP+SSL(安全套接字层),即带有安全套接字层的超文本传输协议,默认端口:443。SSL层对传输的内容(超文本,也就是请求或者响应)进行加密。
- 可以打开浏览器访问一个URL,右键检查/开发者工具,点击network,点击一个URL,查看HTTP协议的格式。
4.2 爬虫特别关注的请求头或者响应头
4.2.1 请求头字段
|---------------------------|--------------------------------------|
| 字段 | 含义 |
| host | 域名 |
| Connection | 长连接 |
| Upgrade-Insecure-Requests | 升级为Https请求 |
| User-Agent | 提供系统信息和浏览器信息 |
| Referer | 页面跳转处,防盗链(音乐、视频) |
| Cookie | 状态保持 |
| Authrazition | 表示HTTP协议中需要认证资源的认证信息,例如web课程中用于jwt认证 |
加粗的请求头,被用来进行爬虫识别的几率最高。
相较于其他请求头更为重要。
4.2.2 响应头
html
bdpagetype
1
bdqid
0x848f948b0002b969
connection
keep-alive
content-encoding
gzip
content-type
text/html; charset=utf-8
date
Mon, 18 May 2026 07:51:09 GMT
p3p
CP=" OTI DSP COR IVA OUR IND COM "
p3p
CP=" OTI DSP COR IVA OUR IND COM "
server
BWS/1.1
set-cookie
BAIDUID=2C4E91C0A913B809733D19D7584E7B05:FG=1; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com
set-cookie
BIDUPSID=2C4E91C0A913B809733D19D7584E7B05; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com
set-cookie
PSTM=1779090669; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com
set-cookie
BAIDUID=2C4E91C0A913B8095185171236A6AC17:FG=1; max-age=31536000; expires=Tue, 18-May-27 07:51:09 GMT; domain=.baidu.com; path=/; version=1; comment=bd
set-cookie
BDSVRTM=3; path=/
set-cookie
BD_HOME=1; path=/
strict-transport-security
max-age=172800
tr_id
super_0x848f948b0002b969
traceid
177909066905063237229552016659397654889
transfer-encoding
chunked
x-ua-compatible
IE=Edge,chrome=1
x-xss-protection
1;mode=block
爬虫只关注一个响应头: Set-Cookie
|------------|------------------------|
| 字段 | 含义 |
| Set-Cokkie | 对方服务器设置cookie到用户浏览器的缓存 |
4.3 常见的状态码
HTTP常见的状态码
|-----|--------------------------------------------------------------------------------|
| 状态码 | 含义 |
| 200 | 成功 |
| 302 | 跳转,新的URL在响应头的Location提供 |
| 303 | 浏览器对于POST的响应进行重定向至新的URL |
| 307 | 浏览器对于GET请求重定向至新的URL |
| 403 | 资源不可用,服务器理解客户请求,但是拒绝执行它 |
| 404 | 找不到该页面 |
| 500 | 服务器内部错误 |
| 503 | 服务器由于维护或者负载过重,在响应头中可能包含Retry-After响应头。有可能因为爬虫频繁访问URL,是服务器忽略爬虫请求,最终返回503的响应状态码。 |
状态码是服务器给浏览器的真实反馈。可能服务器的开发人员或者运维人员为了阻止数据被爬虫人员获取,可能在状态码上做手脚,也就是说状态码不一定是服务器的真实状态。
所有的状态码都不可信,一切以是否从抓包响应中获取到数据为准。
network抓包的到的源码才是判断依据,elements中的源码是渲染之后的源码,不能作为判断依据。
4.4 浏览器运行流程

4.4.1 http请求流程
- 浏览器拿到域名对应的IP后,现象地址栏的URL发起请求,并获取响应。
- 在返回的响应内容(HTML)中,会带有js、css、图片等URL地址,以及ajax代码。浏览器按照响应中的顺序,依次发送其它请求,获取响应的响应。
- 渲染:浏览器每获取一个响应,就对展示出的结果进行添加(加载),js,css内容会修改页面的内容,js也可以重新发送请求,获取响应。
- 从获取第一个响应并在浏览器中展示,直到最终获取全部响应,并在展示的内容中进行添加或者修改,这个过程就叫做浏览器的渲染。
4.4.2 爬虫的请求过程
但是在爬虫中,爬虫只会请求URL地址,拿到URL地址对应的响应(该相应的内容可以是html\css 、js、图片等)。
浏览器渲染出来的页面和爬虫请求的页面很多时候并不一样。因为爬虫不具备渲染能力。
区别:
浏览器发送所有请求,进行渲染;
爬虫只发送请求,不会渲染。
HTML页面:静态页面。骨骼文件
JS文件/AJAX文件:肌肉文件
CSS文件/字体文件/图片等:皮肤文件
抓包过程:
根据发送的请求流程,分别在HTML、JS、CSS文件响应中查找数据。
爬虫是对关键请求进行分析。