post请求:
post的请求参数,是不会拼接在url后面的,而是需要放在请求对象定制的参数中
post请求的参数需要进行两次编码,第一次urlencode:对字典参数进行Unicode编码转成字符串,第二次encode:将字符串数据转换为字节类型
- 打开百度翻译
- F12打开控制台,输入hello
- 找到想要的参数后,开始写代码
import urllib.request
import urllib.parse
# post请求
url = 'https://fanyi.baidu.com/sug'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36 Core/1.94.200.400 QQBrowser/11.8.5310.400',
}
data = {
'kw': 'hello'
}
# post请求的参数,必须要进行编码
data = urllib.parse.urlencode(data).encode('utf-8')
# post的请求参数,是不会拼接在url后面的,而是需要放在请求对象定制的参数中
request = urllib.request.Request(url, data, headers)
# 模拟浏览器发送请求
response = urllib.request.urlopen(request)
# 获取响应数据
content = response.read().decode('utf-8')
# 把字符串变为json对象
import json
obj = json.loads(content)
print(obj)
注意:
- post请求必须编码,编码之后必须调用encode方法 urllib.parse.urlencode(data).encode(‘utf-8’)
- 参数是放在请求对象定制的方法中 urllib.request.Request(url, data, headers)
请求百度翻译详细翻译:
复制到data里面
data = {
'from': ' en',
'to': ' zh',
'query': ' h',
'transtype': ' realtime',
'simple_means_flag': ' 3',
'sign': ' 830373.542868',
'token': ' ddd8bde679c8ff6448161e2644090f92',
'domain': ' common',
'ts': ' 1689231793396',
}
heads里面加上自己的Cookie
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36 Core/1.94.200.400 QQBrowser/11.8.5310.400',
'Cookie': ''
}