Requests库基本用法
requests是python实现的最简单易用的HTTP库
获取某个请求
r = requests.get("https://app.guojiang.tv/app/getConfig?version=5.1.3") print(r) #<Response [200]> print(type(r)) #<class 'requests.models.Response'> print(r.status_code) #200
get请求参数传递
1)?+键值对
response1 = requests.get("https://app.guojiang.tv/app/getConfig?version=5.1.3") print(response1.url) #https://app.guojiang.tv/app/getConfig?version=5.1.3
2)params关键字参数来传递参数
parameter = { "version":"5.1.3", "packageId":"18" } response2 = requests.get("https://app.guojiang.tv/app/getConfig",params = parameter) print(response2.url) #https://app.guojiang.tv/app/getConfig?version=5.1.3&packageId=18
3)将一个列表作为值传入(注意字典里值为 None 的键都不会被添加到 URL )
parameter = { "version":"5.1.3", "packageId":"18", "key":["value1","value2"] } response3 = requests.get("https://app.guojiang.tv/app/getConfig",params = parameter) print(response3.url) #https://app.guojiang.tv/app/getConfig?version=5.1.3&packageId=18&key=value1&key=value2
Post请求参数传递
1)传递一个字典给 data 参数
playload = { "version":"5.1.3", "packageId":"18", "remember":"true", "username":"15889641618", "password":base_psw } response4 = requests.post("https://app.guojiang.tv/user/login",data = playload) print(response4.json()) #{'errno': 0, 'msg': '', 'data': {'uid': '1666723'}}
2)还可以为 data 参数传入一个元组列表。在表单中多个元素使用同一 key 的时候,这种方式尤其有效,字典会第二个值覆盖第一个值
playload = (("version","5.1.3"),("packageId","18"),("remember","true"), ("username","15889641618"),("password",base_psw)) response4 = requests.post("https://app.guojiang.tv/user/login",data = playload) print(response4.json()) #{'errno': 0, 'msg': '', 'data': {'uid': '1666723'}}
定制请求头
如果想为请求添加 HTTP 头部,只要简单地传递一个 dict 给 headers 参数就可以了。
以知乎为例子
response =requests.get("https://www.zhihu.com") print(response.text) #报错
此时会报错,因为访问知乎需要头部信息,在谷歌浏览器输入chrome://version,就可以得到用户代理
new_headers = { "User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Safari/537.36" } response = requests.get("https://www.zhihu.com",headers = new_headers) print(response.text)
获取响应内容
Requests 会自动解码来自服务器的内容。大多数 unicode 字符集都能被无缝地解码。请求发出后,Requests 会基于 HTTP 头部对响应的编码作出有根据的推测
1)response.text返回的是Unicode型的数据。---文本
2)response.content返回的是bytes型也就是二进制的数据。-----图片等
3)Requests 中有一个内置的 JSON 解码器,处理 JSON 数据
response4 = requests.post("https://app.guojiang.tv/user/login",data = playload) print(response4.text) print(response4.content) print(response4.json()) print(response4.json()["errno"]) print(response4.json()["data"])

通过response获得属性
response = requests.post("https://app.guojiang.tv/user/login",data = playload) print(response.status_code) print(response.headers) print(response.cookies)

根据请求结果进行断言
response = requests.post("https://app.guojiang.tv/user/login",data = playload) if response.status_code==200: print("请求成功")else: print("请求失败")

浙公网安备 33010602011771号