Requests库的7个主要方法:
方法 | 说明 |
---|---|
requests.request() | 构造一个请求,支撑以下各方法的基础方法 |
requests.get() | 获取HTML网页的主要方法,对应于HTTP的GET |
requests.head() | 获取HTML网页头信息的方法,对应于HTTP的HEAD |
requests.post() | 向HTML网页提交POST请求的方法,对应于HTTP的POST |
requests.put() | 向HTML网页提交PUT请求的方法,对应于HTTP的PUT |
requests.patch() | 向HTML网页提交局部修改请求,对应于HTTP的PATCH |
requests.delete() | 向HTML页面提交删除请求,对应于HTTP的DELETE |
HTTP协议
HTTP,Hypertext Transfer Protocol,超文本传输协议。
HTTP是一个基于“请求与响应”模式的、无状态的应用层协议。
HTTP协议采用URL作为定位网络资源的标识。
简单说,用户发起请求,服务器做相关响应,这就是请求与响应的模式。
无状态指的是第一次请求跟第二次请求之间并没有相关的关联。
应用层协议指的是该协议工作在TCP协议之上。
URL格式 http://host[:port][path]
host:合法的Internet主机域名或IP地址
port:端口号,缺省端口为80
path:请求资源的路径
port可以省略,默认为80
HTTP URL实例:
http://www.bit.edu.cn
http://220.181.111.188/duty
HTTP URL的理解:
URL是通过HTTP协议存取资源的Internet路径, 一个URL对应一个数据资源。
HTTP协议对资源的操作:
方法 | 说明 |
---|---|
GET | 请求获取URL位置的资源 |
HEAD | 请求获取URL位置资源的响应消息报告,即获得该资源的头部信息 |
POST | 请求向URL位置的资源后附加新的数据 |
PUT | 请求向URL位置存储一个资源,覆盖原URL位置的资源 |
PATCH | 请求局部更新URL位置的资源,即改变该处资源的部分内容 |
DELETE | 请求删除URL位置存储的资源 |
![](https://img-blog.csdnimg.cn/20200303100543541.png)
事实上,HTTP协议通过 URL 对资源做定位,通过上面六个常用方法对资源进行管理,每一次操作都是独立无状态的,在 HTTP协议的世界里网络通道跟服务器都是黑盒子,它能看到的就是 URL链接以及对 URL链接的相关操作。
URL 统一资源定位器
理解PUT和PATCH的区别:
假设 URL位置有一组数据 UserInfo, 包括 UserID、 UserName等20个字段。
需求:用户修改了 UserName,其他不变。
- 采用 PATCH,仅向 URL 提交 UserName 的局部更新请求。
- 采用 PUT,必须将所有20个字段一并提交到URL,未提交字段被删除。
PATCH的最主要好处:节省网络带宽
PUT 是修改了整条记录,不变的字段也重写一点,不过重写的值与原来相同而已;而 PATCH 只是单独修改一个字段 。
意思就是,PATCH 相比于 PUT方法更加的节省计算机与网络资源,但其实不必刻意区分,使用 PUT 即可完成所有需求。
PATCH 与 PUT 属性上的一个重要区别还在于:PUT 是幂等的,而 PATCH 不是幂等的。
幂等是一个数学和计算机学概念,在计算机范畴内表示一个操作执行任意次对系统的影响跟一次是相同。
HTTP协议与Requests库:
HTTP协议方法 | Requests库方法 | 功能一致性 |
---|---|---|
GET | requests.get() | 一致 |
HEAD | requests.head() | 一致 |
POST | requests.post() | 一致 |
PUT | requests.put() | 一致 |
PATCH | requests.patch() | 一致 |
DELETE | requests.delete() | 一致 |
Requests库的head()方法:
![](https://img-blog.csdnimg.cn/20200303103951165.png)
用 head方法可以用很少的网络流量获取网络资源的概要信息。
Requests库的post()方法:
![](https://img-blog.csdnimg.cn/2020030310461243.png)
说明当我们向 URL 去post了一个字典或者键值对的时候,键值对会默认地被存储到表单的字段下。
![](https://img-blog.csdnimg.cn/20200303104646655.png)
post方法根据用户提交内容的不同,在服务器上会做数据的相关整理。
Requests库的put()方法:
![](https://img-blog.csdnimg.cn/20200303104801166.png)
和post类似,只不过能将原有数据覆盖掉。
参考资料:Python网络爬虫与信息提取(北京理工大学慕课)