使用post请求:
requests.post(url,data, headers)
寻找url:
1.打开百度翻译,随便输入一段值:
2.鼠标右击,打开检查选项,点击“网络”
3.点击fetch/XHR
4.在翻译面板里随便输入或删除一些字,比如把“早上好”的“好”删除
我们发现删去“好”后多出了很多新东西,比如sug
5,点击sug
发现标头里有我们想要的URL:https://fanyi.baidu.com/sug
于是我们把url找到了
接下来开始写程序:
# 导入工具包
import requests
import json
#爬取百度翻译
def baidu_spider(keyword:str='早上好')->str:
"""
根据关键字爬取百度翻译信息
:param keyword: 需要翻译的文本
:return: 百度翻译结果
"""
if keyword is None:
print("Parameter keyword should not be None!")
return
#1.指定链接
url="https://fanyi.baidu.com/sug"#通过网页逆向工程得到
#2.UA伪装
headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36'}
#3.POST参数设置
params={'kw':keyword}
try:
#4.发送请求
r = requests.post(url=url, data=params, headers=headers)
r.raise_for_status() # 如果状态不是200,引发HTTPError异常
r.encoding = r.apparent_encoding # 获取并设置字符编码
# 5.获取响应的信息
dict_obj = r.json()
#6.持久化存储
fileName = keyword + '.json'
fp = open(fileName, 'wt', encoding='utf-8')
json.dump(dict_obj, fp=fp, ensure_ascii=False)
fp.close()
print("翻译结果: ", dict_obj["data"])
except:
print('error')
return None
if __name__ == "__main__":
keyword=input("请输入需要翻译的中文:")
baidu_spider(keyword)
看看运行结果:
嗯哼!完工!