request 模块主要分为两个传参部分 get 和 post
一、get请求
基本形式
1 2 3 4 5 6 7 | import requests url = 'http://www.baidu.com' # 使用?携带参数 r = requests.get(url) #简单的get请求 用request.get()而需要自定义请求头的get用request.Request() #简单的get请求只能把数据放在url里 print(r.text)#text:获得借口返回值的文本格式 |
1、url格式:http://接口地址?key1=value1&key2=value2
传参一般用字典:params={key1: value1, key2: value2}
涉及到的问题:
(1)如果参数中包含汉字 ,则会报编码错误
此处用
1 | urllib.parse.urlencode(dic) |
实现对字典的转码(将utf-8转为ascii码),此处转码后的结果可直接与url拼接成新的 url_end。
解码可以用
1 | urllib.parse.unquote(dic or str) |
(2)get传参的几个常用参数
header : 请求头 (后详细讲请求头的定制)
params : 用于传递测试接口所要用的参数,常用字典形式。
timeout : 设置最大访问时间,若超出该时间未接收到接口的反应会报错
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | import urllib.request import urllib.parse keyword = input('请输入搜索关键字:') a = urllib.parse.urlencode( { 'wd' : keyword } ) #b = urllib.parse.unquote(a) 实现a的解码 header = {'user-Agent':’haha‘} end_url = 'http://www.baidu.com/s?'+a c = request.Request( end_url,headers = header )#访问 #获得响应 with request.urlopen(c) as f : for line in f.readlines(): print(line) |
二、post请求
与request.Request类似
区别 Request 传参时 用params ,post 用 data
案例来自 LilyoO
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | import requests # 请求数据 url = 'http://api.shein.com/v2/member/login' header = { 'content-type': 'application/x-www-form-urlencoded' } data = { 'user_id': '123456', 'email': '[email protected]' } timeout = 0.5 req = requests.post(url, headers=header, data=data, timeout=timeout) # 发post请求 print(req.text) print(type(req.json())) |
想进一步深入理解GET和POST两种基本请求方法的区别:https://www.cnblogs.com/logsharing/p/8448446.html