本文摘录自爬虫入门系列(一):快速理解HTTP协议 侵删
HTTP 协议是互联网应用中,客户端(浏览器)与服务器之间进行数据通信的一种协议。
协议中规定了客户端应该按照什么格式给服务器发送请求,同时也约定了服务端返回的响应结果应该是什么格式。
HTTP 协议本身是非常简单的。它规定,只能由客户端主动发起请求,服务器接收请求处理后返回响应结果。
1.请求
HTTP 请求由3部分组成,分别是请求行、请求首部(可选)、请求体(可选)。
1.1请求行
请求行是每个请求必不可少的部分,它由3部分组成,分别是请求方法(method)、请求URL(URI)、HTTP协议版本,以空格隔开。
请求方法
HTTP协议中最常用的请求方法有:GET、POST、PUT、DELETE。
其中,GET 方法用于从服务器获取资源,90%的爬虫都是基于GET请求抓取数据。
请求 URL 是指资源所在服务器的路径地址
1.2请求首部
因为请求行所携带的信息量非常有限,以至于客户端还有很多想向服务器要说的事情不得不放在请求首部(Header)
请求首部用于给服务器提供一些额外的信息,比如:
User-Agent 用来表明客户端的身份,让服务器知道你是来自浏览器的请求还是爬虫,是来自 Chrome 浏览器还是 FireFox。
HTTP/1.1 规定了47种首部字段类型。HTTP首部字段的格式很像 Python 中的字典类型,由键值对组成,中间用冒号隔开。比如:
User-Agent: Mozilla/5.0
1.3请求体
请求体是客户端提交给服务器的真正内容,
比如用户登录时的需要用的用户名和密码,比如文件上传的数据,比如注册用户信息时提交的表单信息。
2.响应
服务端接收请求并处理后,返回响应内容给客户端,同样地,响应内容也必须遵循固定的格式浏览器才能正确解析。HTTP 响应也由3部分组成,分别是:响应行、响应首部、响应体,与 HTTP 的请求格式是相对应的。
2.1响应行
响应行同样也是3部分组成,由服务端支持的 HTTP 协议版本号、状态码、以及对状态码的简短原因描述组成。
状态码是响应行中很重要的一个字段。通过状态码,客户端可以知道服务器是否正常处理的请求。
如果状态码是200,说明客户端的请求处理成功,
如果状态码是500,说明服务器处理请求的时候出现了异常。
如果状态码是404, 表示请求的资源在服务器找不到。
2.2响应首部
响应首部和请求首部类似,用于对响应内容的补充。
在首部里面可以告知客户端:
- 响应体的数据类型是什么
- 响应内容返回的时间是什么时候
- 响应体是否压缩了
- 响应体最后一次修改的时间
2.3响应体
响应体(body)是服务器返回的真正内容,
它可以是一个HTML页面,或者是一张图片、一段视频等等。