Requests库学习笔记
简介
该库作者(KENNETH REITZ)
利用 GitHub API 学习
请求方法
- GET: 查看资源
- POST: 增加资源
- PUT: 修改资料
- DELETE: 删除资源
- HEAD: 查看响应头
- OPTIONS: 查看可用请求方法
带参数的请求
URL Parameters: URL参数
- https://list.tmall.com/search_product.html?cat=50514037&…
- params: requests.get(url,
params
={‘key1’:’value1’})
表单参数提交:
- Content-Type: application/x-www-form-urlencoded
- 内容: key1=value1&key2=value2
- requests.post(url,data={‘key1’:’value1’,’key2’:’value2’})
json参数提交:
- Content-Type: application/json
- 内容: ‘{‘key1’:’value1’,’key2’:’value2’}’
- requests.post(url,json={‘key1’:’value1’,’key2’:’value2’})
请求异常处理
requests库
包括的异常都继承自requests.exceptions.RequestException
类
- BaseHTTPError
- ChunkedEncodingError
- ConnectTimeout
- ConnectionError
- ContentDecodingError
- HTTPError
- InvalidSchema
- InvalidURL
- MissingSchema
- ProxyError
- ReadTimeout
- RequestException
- RetryError
- SSLError
- StreamConsumedError
- Timeout
- TooMangRedirects
- URLRequired
1
2
3
4
5 其中常见的
ConnectionError 由于网络原因,无法建立连接。
HTTPError 如果响应的状态码不为200,Response.raise\_for\_status()会抛出HTTPError 异常。
Timeout 超时异常。
TooManyRedirects 若请求超过了设定的最大重定向次数,则会抛出一TooManyRedirects 异常。
- 请求超时处理
1
2
3
4 requests.get(url,timeout=(3,7)) # TCP协议三次握手,对于1过程等待3秒,2过程等待7秒
requests.get(url,timeout=10) # 总过程10秒
> requests.exceptions.Timeout
- HTTPError
1 > requests.exceptions.HTTPError
自定义 Request
通过Request Session实现
1 | from requests import Request, Session |
这是实现之前的一个实例
1 | # 这是调用github一些的api写的实例 |
响应基本API
1XX:消息
2XX:成功
3XX:重定向
4XX:请求(客户端)错误
5XX:服务器错误
600:源站没有返回响应头部,只返回实体内容
1 | import requests |
进阶
自动下载图片/文件
- 浏览器模拟
- 构建request
- 读取流data
- 存入数据
1 | '''demo:下载图片 |
事件钩子(Event Hooks)
1 | #-*- coding: utf-8 -*- |
HTTP认证
HTTP基本认证
OAUTH认证
1 | #-*- coding: utf-8 -*- |
代理(Proxy)
- 启动代理服务Heroku
- 在主机1080端口启动Socks服务
- 将请求转发到1080端口
- 获取相应资源
1 | import requests |
Session 和 Cookie
- Session 服务器存储数据
- Cookie 浏览器存储数据
Session 的作用就是它在 Web服务器上保持用户的状态信息供在任何时间从任何设备上的页面进行访问。因为浏览器不需要存储任何这种信息,所以可以使用任何浏览器,即使是像 Pad 或手机这样的浏览器设备。
“Cookie”是小量信息,由网络服务器发送出来以存储在网络浏览器上,从而下次这位独一无二的访客又回到该网络服务器时,可从该浏览器读回此信息。这是很有用的,让浏览器记住这位访客的特定信息,如上次访问的位置、花费的时间或用户首选项(如样式表)。Cookie 是个存储在浏览器目录的文本文件,当浏览器运行时,存储在 RAM 中。一旦你从该网站或网络服务器退出,Cookie 也可存储在计算机的硬驱上。当访客结束其浏览器对话时,即终止的所有 Cookie。
源码(python3.x)改自iMOOC的课程
Python-走进Requests库