理解Requests库的异常和HTTP协议
简单理解Requests库中的异常和HTTP协议。
| 异常 | 说明 |
|---|---|
| requests.ConnectionError | 网络连接错误异常,如DNS查询失败、拒绝连接等 |
| requests.HTTPError | HTTP错误异常 |
| requests.URLRequired | URl缺失异常 |
| requests.TooManyRedirects | 超过最大重定向次数,产生重定向异常 |
| requests.ConnectTimeout | 连接远程服务器超时异常 |
| requests.Timeout | 请求URL超时,产生超时异常 |
Response的异常:
| 异常 | 说明 |
|---|---|
| r.raise_for_status() | 如果不是200, 产生异常requests.HTTPError |
爬取网页的通用代码框架
1 | import requests |
HTTP协议
HTTP, Hypertext Transfer Protocol, 超文本传输协议
HTTP是一个基于“请求与响应”模式的、无状态的应用层协议。
HTTP协议采用URL作为定位网络资源的标识。
URL格式: http://host[ :port ][ path ]
HTTP URL的理解:
URL 是通过HTTP协议存取资源的Internet路径,一个URL对应一个数据资源。
HTTP协议对资源的操作
| 方法 | 说明 |
|---|---|
| GET | 请求获取URL位置的资源 |
| HEAD | 请求获取URL位置资源的响应消息报告,即获取该资源的头部信息 |
| POST | 请求URL位置的资源后附加新的数据 |
| PUT | 请求向URL位置存储一个资源,覆盖原URL位置的资源 |
| PATCH | 请求局部更新URL位置的资源,即改变该处资源的部分内容 |
| DELETE | 请求删除URL位置存储的资源 |
理解PATCH和PUT的区别:
假设URL位置有一组数据UserInfo, 包括UserID、UserName等20个字段
需求:用户修改了UserName,其他不变。
采用PATCH,仅向URL提交UserName的更新请求。
采用PUT,必须将所有20个字段一并提交URL,未提交字段被删除。
PATCH的好处:节省网络带宽