HTTP基本原理
URI和URL
URI(Uniform Resource Identifier),统一资源标志符;URL(Uniform Resource Locator),统一资源定位符;URN(Uniform Resource Name),统一资源名称,只命名组员而不指定如何定位资源。URL和URN都是URI的子集。
超文本hypertext
超文本是用超链接的方法,将各种不同空间的文字信息组织在一起的网状文本。网页就是超文本的一种体现
http和https
http(Hyper Text Transfer Protocol)超文本传输协议。用于从网络传输超文本数据到本地浏览器接收。
https(Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,在HTTP下加入SSL层。
http请求过程
含义 | 解释 | |
---|---|---|
Name | 请求的名称 | 一般会将URL的最后一部分内容当做名称 |
Status | 响应的状态码 | |
Type | 请求的文档类型 | |
Initiator | 请求源 | 用来标记请求是由那个对象或进程发起的 |
Size | 从服务器下载的文件和请求的资源的大小 | |
Time | 发起请求到获取相应所用的总时间 | |
WaterFall | 网络请求的可视化瀑布流 |
请求
请求可以分为4部分:请求方法(Request Method)、请求的网址(Request URL)、请求头(Request Header)、请求体(Request Body)。
请求方法
常见请求方法有两种,GET和POST。除此之外还有PUT、DELETE、OPTIONS、CONNECT、TRACE等
方法 | 描述 |
---|---|
GET | 请求页面,并返回页面内容 |
HEAD | 类似于GET,只不过返回的相应没有具体的内容,用于获取报头 |
POST | 大多用于提交表单或者上传文件,数据包含在请求体中 |
PUT | 从客户端向服务传送的数据取代指定文档中的内容 |
DELETE | 请求服务器删除指定的页面 |
CONNECT | 把服务器当做跳板,让服务器代替客户端访问其他页面 |
OPTIONS | 允许客户端查看服务器的性能 |
TRACE | 回显服务器收到得的请求,主要用于测试或者诊断 |
请求的地址
即URL,可以确定请求的资源
请求头
用来说明服务器要是使用的附加信息
请求头信息 | 说明 |
---|---|
Accept | 请求报头域,用于指定客户端可以接受那些类型的信息 |
Accept-Language | 指定客户端可以接受的语言类型 |
Accept-Encoding | 指定客户端可以接受的内容编码 |
Host | 用于指定请求资源的主机IP和端口号,其内容为请求地址的原始服务器或者网关位置 |
Cookie(s) | 网站为了辨别用户进行会话跟踪而存储在用户本地的数据 |
Referer | 用来标识这个请求是从哪个页面发送过来的 |
User-Agent(UA) | 可以使服务器是被客户使用的操作系统以及版本、浏览器以及版本信息 |
Content-Type | 互联网媒体类型/MIME类型,用来表示具体请求中的媒体类型信息 |
请求体
一般承载的内容是POSt请求中的表单数据,而对于GET请求,请求体为空
响应
由服务器返回给客户端,可以分为三部分:响应状态码(Response Status Code)、响应头(Response Header)、响应体(Response Body)
响应的状态码
表示服务器的响应状态。
状态码 | 说明 | 详情 |
---|---|---|
100 | 继续 | 请求者应当继续提出请求,服务器已经接受部分请求,正在等待其余部分 |
101 | 切换协议 | 请求者已要求服务器切换协议,服务器已确认并做好准备 |
200 | 成功 | 服务器已经处理好了请求 |
201 | 已创建 | 请求成功并且服务器创建了新的资源 |
202 | 已接受 | 服务器已经接受请求,但是尚未处理 |
203 | 非授权信息 | 服务器已成功处理了请求,但返回的信息可能来自另一个源 |
204 | 无内容 | 服务器已经处理了请求,但没有认可返回信息 |
205 | 重置内容 | 服务器成功处理了请求,内容被重置 |
206 | 部分内容 | 服务器成功处理了部分请求 |
300 | 多种选择 | 针对请求,服务器可执行多种选择 |
301 | 永久移动 | 请求的网页已经永久移动到新位置,即永久重定向 |
302 | 临时移动 | 请求的网页暂时跳转到其他页面,即临时重定向 |
303 | 查看其他位置 | 如果原来的请求是POST,重定向目标文档应该通过GET获取 |
304 | 未修改 | 此次请求返回的网页未修改,继续使用上次的资源 |
305 | 使用代理 | 请求者应该使用代理访问该页面 |
307 | 临时重定向 | 请求的资源临时从其他位置响应 |
400 | 错误请求 | 服务器无法解析该请求 |
401 | 未授权 | 请求没有进行身份验证或者验证未通过 |
403 | 禁止访问 | 服务器拒绝该请求 |
404 | 未找到 | 服务器找不到请求的页面 |
405 | 方法禁用 | 服务器禁用了请求中指定的方法 |
406 | 不接受 | 无法使用请求的内容相应请求的网页 |
407 | 需要代理授权 | 请求者需要代理授权 |
408 | 请求超时 | 服务器请求超时 |
409 | 冲突 | 服务器在完成请求时发生冲突 |
410 | 已删除 | 请求的资源已永久删除 |
411 | 需要有效长度 | 服务器不接受不含有有效长度标头字段的请求 |
412 | 为满足前提条件 | 服务器为满足请求者在请求中设置的一个前提条件 |
413 | 请求实体过大 | 请求实体过大,超出服务器处理范围 |
414 | 请求URI过长 | 请求网址过长,服务器无法处理 |
415 | 不支持类型 | 请求个事不被请求页面支持 |
416 | 请求范围不符 | 页面无法提供请求的范围 |
417 | 未满足期望值 | 服务器未满足期望请求标头字段的要求 |
500 | 服务器内部错误 | 服务器遇到错误,无法完成请求 |
501 | 未实现 | 服务器不具备完成请求的功能 |
502 | 错误网关 | 服务器作为网关或者代理,从上游服务器收到无效响应 |
503 | 服务不可用 | 服务器目前无法使用 |
504 | 网关超时 | 服务器作为网关或者代理,但是没有及时从上游服务器收到请求 |
505 | HTTP版本不支持 | 服务器不支持请求中所用的HTTP协议版本 |
响应头
响应头包含了服务器对请求的应答信息,常见的应答信息:
标签 | 含义 |
---|---|
Date | 标识响应产生的时间 |
Last-Modified | 指定资源的最后修改时间 |
Content-Encoding | 指定响应内容的编码 |
Server | 包含服务器的信息(名称、版本号等) |
Content-Type | 文档类型 |
Set-Cookie | 设置Cookie |
Expires | 指定响应的过期时间,可以使用代理服务器或者浏览器将加载的内容更新到缓存中 |
响应体
相应的正文
爬虫原理
概述
爬虫就是获取网页并提取保存信息的自动化程序。
参考资料
崔庆才大佬的《python3网络爬虫开发实战》