requests实战——获取百度翻译的翻译信息
1. 需求
输入单词,可获取百度翻译栏中的翻译信息
2. 对百度翻译的过程进行分析
打开页面后,打开抓包工具。在百度翻译的输入栏中输入dog,查看到Network中抓取的信息。(页面进行了局部刷新,此方式由阿贾克斯请求可以实现,因此分析阿贾克斯请求到的数据即可,分析XHR[阿贾克斯请求所对应的数据包])
在XHR中的第一个sug中kw为报文传输来的参数数据d,第二个为do,第三个为dog。因此从第三个sug进行分析处理。
该sug为POST请求,目标的URL为https://fanyi.baidu.com/sug
获取到的Response为json类型的字典对象数据
3. 代码
import requests
import json
if __name__ == "__main__":
# 指定url
post_url = 'https://fanyi.baidu.com/sug'
# 进行UA伪装
headers = {
'User-Agent':'Mozilla/......'
}
# post请求参数处理(同get请求一致)
word = input('enter a word:')
data = {
'kw':word
}
# 请求发送
response = requests.post(url=post_url, data=data, headers=headers)
# 获取响应数据:使用.text返回字符串数据,使用json()方法返回的是obj(一个字典对象)(若确认响应数据是json类型的,才可以使用json方法进行返回)
dic_obj = response.json()
print(dic_obj)
# 进行持久化存储
fileName = word + '.json'
with open(fileName,'w',encoding='utf-8') as fp:
json.dump(obj=dic_obj, fp=fp, ensure_ascii=False)
print("over!")
4. 实现效果