import requests rsp = requests.get('https://www.baidu.com') print(rsp.text) # 字符串 print(rsp.content) # bytes,字节。 == 二进制 # print(rsp.json()) # 字典格式,当返回是字典格式时可用
设置请求方法:
import requests # 常用的requests的请求方法 resp = requests.get('http://httpbin.org/get') resp = requests.post('http://httpbin.org/get') resp = requests.put('http://httpbin.org/get') resp = requests.delete('http://httpbin.org/get') # 自动化测试 method = 'post' # 通用的方法1 if method == 'get': requests.get('http://httpbin.org/get') elif method =='post': requests.post('http://httpbin.org/get') # 通用的方法2 func_name = getattr(requests, method) resp = func_name('http://httpbin.org/get') # 通用的方法3 requests.request(method, 'http://httpbin.org/get') print(resp)
设置请求头:
import requests url = 'https://www.httpbin.org/get' headers = {"xxx": "123", "yyy": "456", "User-Agent": "aaa"} # get # 添加请求头,使用字典存储自定义的请求头 resp = requests.request('get', url=url, headers=headers) print(resp.text) # 自定义请求头,直接将请求头保存到字典当中,通过headers 关键字参数传递
设置请求参数:
import requests url = 'http://httpbin.org/post' # get请求 # 1. 请求头传输 # 2. URL参数,query_string,查询字符串 # url = f"{url}?username=qq&pwd=123" # resp = requests.request('get', url) # print(resp) # 3. URL参数 方法2:params 关键字参数就是设置URL参数的 params = {"username": "qq","pwd": "123"} resp = requests.request('get', url, params=params) # print(resp.text) # 4. form-data, 存在字典中,通过data关键字参数传递 data = {"username": "qq", "pwd": "123"} resp = requests.request('post', url, data=data) # print(resp.text) # 5. 支持form-data, query string, header 同时传递 # 6. json数据 data = {"username": "qq", "pwd": "123"} resp = requests.request('post', url, json=data) print(resp.text) # 7. 不能同时传递json和form-data,因为它们都是请求体
设置响应的格式:
import requests import json url = 'http://httpbin.org/post' resp = requests.request('post', url) # print(resp.text) # str # print(resp.content) # bytes # print(resp.json()) # dict # text, content, json() 格式转化 # text ==》编码 content new_content = resp.text.encode() print(new_content) # content ==》解码 text new_text = resp.content.decode() print(new_text) # text ==>字典 eval() 这种方法不安全,"sudo rm -rf /" 假如有这种代码,容易误操作 # 字典 ===》text 使用'' # eval 本质:转化为可以执行的python代码 # text ===》特定的格式,json 是字符串,内容是键值对的字符串,键必须使用双引号,布尔值使用小写的true和false # 在json中null == python中的None,不支持圆括号() """ {"key": "value", "key1": [1, 2, 3], "key2": true, "key3": {}} """ # JSON 转化成python字典 json_data = '{"key": "value", "key1": [1,2,3], "key2": true, "key3": null}' # JSON===>dict ,反序列化 dict_data = json.loads(json_data) print(dict_data) # 其中key2和key3会打印首字母大写的True和None # dict ==> json 的数据格式。序列化 json_new_data = json.dumps(dict_data) print(json_new_data) # 序列化和反序列化面试问题 # 序列化:編程语言的数据类型转化成通用的数据格式,文本和二边制。String # 反序列化: 通用的数据格式转成编程语言的数据类型.
token的处理:
""" 操作思路: 1, 登录,得到登录接口返回的token值,包含tokenyype,bearer 2, 再访问其他接口时,带上token值 3,token放在请求的什么位置,一般由接口开发者定义 4,标准的规范是放在Authorization 的请求头中,通常会设置一个前缀 Bearer, JWT Authorization: Bearer token值 """ import requests url = 'http://api.lemonban.com:8766/futureloan/member/login' headers = {"X-Lemonban-Media-Type": "lemonban.v2", "Content-Type": "application/json"} data = { "mobile_phone": "", "pwd": "" } resp = requests.post(url,headers=headers, json=data) print(resp.text) # 得到token json_resp = resp.json() print(json_resp["data"]["token_info"]["token"])