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("请求失败")
posted @ 2020-04-06 11:31  测试园  阅读(689)  评论(0)    收藏  举报