requests模块笔记
博客专区 > xuzhzz 的博客 > 博客详情
requests模块笔记
xuzhzz 发表于3个月前
requests模块笔记
  • 发表于 3个月前
  • 阅读 0
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 新注册用户 域名抢购1元起>>>   

背景

Requests 是用Python语言编写,基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库。它比 urllib 更加方便,可以节约我们大量的工作,完全满足 HTTP 测试需求。

发送请求传递参数

# 同一的请求接口样式
import requests
import json

requests.get(‘https://github.com/timeline.json’) #GET请求
requests.post(“http://httpbin.org/post”) #POST请求
requests.put(“http://httpbin.org/put”) #PUT请求
requests.delete(“http://httpbin.org/delete”) #DELETE请求
requests.head(“http://httpbin.org/get”) #HEAD请求
requests.options(“http://httpbin.org/get”) #OPTIONS请求



# 传递参数 url headers params data timeout cookies proxies
# GET
requests.get(url, headers= ,params= ,)
requests.post(url, headers=, data=, )

# POST发送JSON数据 json
r = requests.post('https://api.github.com/some/endpoint', data=json.dumps({'some': 'data'}))
# 或者
r = requests.post('https://api.github.com/some/endpoint', json={'some': 'data'})
r.json

# post上传文件 files=
files = {'file': open(path, 'rb')}
r = requests.post(url, files=files)

响应

r.status_code #响应状态码
r.raw #返回原始响应体,也就是 urllib 的 response 对象,使用 r.raw.read() 读取
r.content #字节方式的响应体,会自动为你解码 gzip 和 deflate 压缩
r.text #字符串方式的响应体,会自动根据响应头部的字符编码进行解码
r.headers #以字典对象存储服务器响应头,但是这个字典比较特殊,字典键不区分大小写,若键不存在则返回None
# 特殊方法
r.json() #Requests中内置的JSON解码器
r.raise_for_status() #失败请求(非200响应)抛出异常

重定向 请求历史

默认情况下,除了 HEAD, Requests 会自动处理所有重定向。 可以使用响应对象的 history 方法来追踪重定向。 Response.history 是一个 Response 对象的列表,为了完成请求而创建了这些对象。这个对象列表按照从最老到最近的请求进行排序。

r = requests.get('http://github.com')

r.url # 'https://github.com'

r.history # [<Response [301]>]

## 禁止重定向
r = requests.head('http://github.com', allow_redirects=True)

超时和异常

timeout=

所有Requests显式抛出的异常都继承自 requests.exceptions.RequestException:ConnectionError、HTTPError、Timeout、TooManyRedirects。 如果 HTTP 请求返回了不成功的状态码, Response.raise_for_status() 会抛出一个 HTTPError 异常。 若请求超时,则抛出一个 Timeout 异常。 若请求超过了设定的最大重定向次数,则会抛出一个 TooManyRedirects 异常。

查看更多高级用法

requests高级用法

共有 人打赏支持
粉丝 0
博文 6
码字总数 18385
×
xuzhzz
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: