request 模块主要分为两个传参部分 get 和 post
一、get请求
基本形式
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)如果参数中包含汉字 ,则会报编码错误
此处用
urllib.parse.urlencode(dic)
实现对字典的转码(将utf-8转为ascii码),此处转码后的结果可直接与url拼接成新的 url_end。
解码可以用
urllib.parse.unquote(dic or str)
(2)get传参的几个常用参数
header : 请求头 (后详细讲请求头的定制)
params : 用于传递测试接口所要用的参数,常用字典形式。
timeout : 设置最大访问时间,若超出该时间未接收到接口的反应会报错
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
import requests
# 请求数据
url = 'http://api.shein.com/v2/member/login'
header = {
'content-type': 'application/x-www-form-urlencoded'
}
data = {
'user_id': '123456',
'email': '123456@163.com'
}
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