urllib发送带参数的post请求
- 定义参数
- 将参数转化为字符串
- 将字符串编码为字节bytes类型
- 组装请求对象
- 发送请求,得到返回的结果
- 将返回结果按照指定的编码方式解码
from urllib import request, parse
def fanyi(keyword):
url = "https://fanyi.baidu.com/sug"
data = { # 定义参数
'kw': keyword
}
data = parse.urlencode(data) # 将参数编码成字符串
data = bytes(data, encoding='utf-8') # 再将字符串编码为字节类型
headers = {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36',
}
req = request.Request(url, data=data, headers=headers) #组装请求对象,传入url, 字节类型的参数data,相应的header头信息。
res = request.urlopen(req) # 发送请求
# print(res)
html = res.read().decode('utf-8') # 将接收到的数据使用utf8解码
json_data = json.loads(html)
print(json_data['data'][0]['v'])