Python爬虫——urllib_post请求百度翻译

post请求:
post的请求参数,是不会拼接在url后面的,而是需要放在请求对象定制的参数中
post请求的参数需要进行两次编码,第一次urlencode:对字典参数进行Unicode编码转成字符串,第二次encode:将字符串数据转换为字节类型

  1. 打开百度翻译
  2. F12打开控制台,输入hello
  3. Python爬虫——urllib_post请求百度翻译_第1张图片
  4. Python爬虫——urllib_post请求百度翻译_第2张图片
  5. 找到想要的参数后,开始写代码
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)

注意:

  1. post请求必须编码,编码之后必须调用encode方法 urllib.parse.urlencode(data).encode(‘utf-8’)
  2. 参数是放在请求对象定制的方法中 urllib.request.Request(url, data, headers)

请求百度翻译详细翻译:

Python爬虫——urllib_post请求百度翻译_第3张图片
复制到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': ''
}

你可能感兴趣的:(Python爬虫,python,爬虫)