破解百度翻译
1、页面基本信息
打开对应页面:直接搜索”百度翻译“,打开百度翻译如图;
需求:获取某个单词或句子的翻译结果
键入要翻译的关键字后,页面局部刷新(依旧使用的是AJAX)
2、数据抓包
3、统计信息
url:= ‘https://fanyi.baidu.com/sug’
对应的请求:post请求
响应的数据类型:json数据类型
url携带的参数:kw: cat
4、实战编码
import requests
import json
# 指定url
post_url = 'https://fanyi.baidu.com/sug'
# url携带的参数进行处理:post请求参数进行处理(同get请求一致)
p = input("输入单词或句子:")
data = {
'kw': p
}
# 进行UA伪装:将对应User-Agent封装到字典中
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'
}
# 发送请求
request = requests.post(url=post_url, data=data, headers=headers)
# 获取响应数据:json方法返回的是一个obj(如果确认响应数据是json类型的,才可以使用json())
dic_obj = request.json()
# 保存数据
fileName = p+'.json'
fp = open(fileName, 'w', encoding='utf-8')
json.dump(aic_obj, fp=fp, ensure_ascii=False) # 默认使用的是编码是ASCII,而中文为Unicode编码,ASCII中不包含中文,能否正常显示中文,要加入参数ensure_ascii=False即可。
print('获取成功!')
5、代码详细解释
1.导入模块
import requests
import json
2.指定对应的url,对携带的参数进行处理,并进行UA伪装
# 指定url
post_url = 'https://fanyi.baidu.com/sug'
# url携带的参数进行处理:post请求参数进行处理(同get请求一致)
p = input("输入单词或句子:")
data = {
'kw': p
}
# 进行UA伪装:将对应User-Agent封装到字典中
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'
}
3.基于requests发送请求,通过前面抓包得到的信息我们得到了,它的请求方式为post请求,这里我们使用requests模块中post()方法来发送请求
request = requests.post(url=url)
4.获取响应数据。通过前面的数据分析我们得到了它响应回来的数据类型为json类型
dic_obj = request.json # 使用json方法返回的是一个obj(如果确认响应数据是json类型的,才可以使用json())
5.进行持久化存储,将数据存储为json文本文档
fileName = p+'.json'
fp = open(fileName, 'w', encoding='utf-8')
json.dump(aic_obj, fp=fp, ensure_ascii=False) # 默认使用的是编码是ASCII,而中文为Unicode编码,ASCII中不包含中文,能否正常显示中文,要加入参数ensure_ascii=False即可。
print('获取成功!')
也可这样写,使用with语句来保存数据:
with open(s, 'w', encoding='utf-8') as bc:
json.dump(hq, bc, ensure_ascii=False)
print('获取成功!')
:
with open(s, 'w', encoding='utf-8') as bc:
json.dump(hq, bc, ensure_ascii=False)
print('获取成功!')