我们在浏览器中输入一个URL,回车之后便会在浏览器中观察到页面内容。实际上,这个过程是浏览器向网站所在的服务器发送了一个请求,网站服务器接收到这个请求后进行处理与解析,然后返回对应的响应。
响应中包含了页面的源代码等内容,浏览器再对其进行解析,便将网页内容呈现出来。

操作:
打开浏览器,打开开发者工具。
访问百度网站。
点击Network,并查看相关内容条目
观察第一个网络请求。

我们可以看到Name,Status等七列内容,下面做简单解释。
第一列 Name :请求的名称,一般会将URL 最后一部分内容当作名称
第二列 Status :响应的状态码,显示为 200 代表响应是正常的 通过状态码,我们可以判断发送了请求之后是否得到了正常的响应 。
第三列 Type: 请求的文档类型 。这里为 document ,代表我们这次请求的是 HTML 文档, 内容就是一些 HTML 代码。
第四列 Initiator: 请求源。 用来标记请求是由哪个对象或进程发起的
第五列 Size : 从服务器下载的文件和请求的资源大小。 如果是从缓存中取得的资源,则该列 会显示from cache。
第六列 Time : 发起请求到获取响应所用的总时间
第七列 Waterfall:网络请求的可视化瀑布流
点击这个条目,我们可以看到更多的信息。

首先是General部分,Request URL为请求的URL,Request Method为请求的方法,Status Code为响应状态码,Remote Address为远程服务器的地址和端口,Referrer Policy为Referrer判别策略。
再往下为Response Headers和Request Headers,这分别代表响应头和请求头。
常见的请求方法有两种:GET和POST
在浏览器直接输入URL并回车,这便发起了一个GET请求,请求的参数会直接包含到URL里。
例如我们在百度中搜索爬虫,这就是一个GET请求,具体链接如下:https://www.baidu.com/s?wd=python
这里的wd后的参数就是我们要搜寻的内容。
POST请求提交时大多在表单提交时发起。比如对于一个登录表单,输入用户名和密码之后,点击“登录“按钮,这通常会发起一个POST请求,其数据通常以表单的形式传输,而不会体现在URL中。
其他请求方法总结

Host :用于指定被请求资源的Internet主机和端口号
Connection (连接类型):关闭TCP连接;长连接(Keep-alive),默认情况
Upgrade-Insecure-Requests (升级为HTTPS请求):下面补充http与https的区别
🌟User-Agent (用户代理):标识请求的浏览器身份的,网站常用这个参数来分辨爬虫,详见相关链接
🌟Referer (页面跳转处):referer的作用就是记录你在访问一个目标网站时,在访问前你的原网站的地址
🌟Cookie (Cookies):这是网站为了辨别用户进行会话跟踪而存储在用户本地的数据。它的主要功能是维持当前访问会话
| 类别 | 说明 | |
|---|---|---|
| 1xx | informational (信息性状态码) | 接收的请求正在处理 |
| 2xx | success(成功状态码) | 请求正常处理完毕 |
| 3xx | Redirection(重定向状态码) | 需要进行附加操作以完成请求 |
| 4xx | Client Error(客户端错误状态码) | 服务器无法处理请求 |
| 5xx | Server Error (服务器错误状态码) | 服务器处理请求出错 |
常见响应状态码
| 常见状态码 | 说明 |
|---|---|
| 200 | 成功 |
| 302 | 跳转,新的url在响应的Location头中给出 |
| 303 | 浏览器对于POST的响应进行重定向至新的url |
| 307 | 浏览器对于GET的响应重定向至新的url |
| 403 | 资源不可用;服务器理解客户的请求,但拒绝处理它(没有权限) |
| 404 | 找不到该页面 |
| 500 | 服务器内部错误 |
| 503 | 服务器由于维护或者负载过重未能应答,在响应中可能可能会携带Retry-After响应头;有可能是因为爬虫频繁访问url,使服务器忽视爬虫的请求,最终返回503响应状态码 |
| 常见响应体 | 说明 |
|---|---|
| Access-Control-Allow-Methods | 接收请求支持的方法 |
| Connection | 连接方式,一般为keep-alive,表示长连接 |
| Content-Encoding | 页面编码方式,这里是gzip,表示文档已被压缩为gzip格式,gzip压缩文档可以有效的减少html下载的时间 |
| Content-Type | 表示页面的MIME类型,MIME见http请求头解释 |
| Date | 响应时的时间 |
| Expires | 页面过期时间,过期后将不再缓存 |
| Keep-Alive | 这里表示长连接的超时时间 |
| Server | 表示服务器的信息,比如名称、版本号等 |
| Set-Cookie | 设置和页面关联的cookie |
在做爬虫时,我们主要通过响应体得到网页的源代码,JSON数据等,然后从中做相应内容的提取。
