版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_42183408/article/details/88625730
欢迎来到python讲堂,这次我们来讲讲python实现百度和有道翻译
首先放上源码地址:https://github.com/code-nick-python/translate_app
接下来开始解析:
#引入包
import requests
import json
import tkinter
#请求头
headers={'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.75 Safari/537.36'}
#有道翻译
def get_translate_youdao(word):
#网址和定制表单
url='http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
Form_data = {'i':word, 'from':'AUTO','to': 'AUTO','smartresult': 'dict', 'client':'fanyideskweb',
'salt':'1512399450582','sign':'78181ebbdcb38de9b4a3f4cd1d38816b','doctype':'json',
'version': '2.1','keyfrom':'fanyi.web','action':'FY_BY_CLICKBUTTION','typoResult':'false'}
#post方式请求网站
response = requests.post(url, data=Form_data)
#json方式解析
content = json.loads(response.text)
#提取翻译结果
result=content['translateResult'][0][0]['tgt']
return result
#百度翻译
def get_translate_baidu(word):
#网址和表单
url='https://fanyi.baidu.com/sug'
Form_data = {'kw':word}
#post方式请求网站
response = requests.post(url, data=Form_data,headers=headers)
#json方式解析
content = json.loads(response.text)
#提取翻译内容
result=content['data'][0]['v']
return result
#主程序,这个就不用说了吧
if __name__ == '__main__':
print('翻译内容:')
translate=input()
youdao=get_translate_youdao(translate)
baidu=get_translate_baidu(translate)
print('有道翻译结果:',youdao)
print('百度翻译结果:',baidu)
其实有道翻译和百度翻译都差不多,这里我们选取百度翻译做解析,首先打开百度翻译:https://fanyi.baidu.com
jie
接下来右键点击检查,选择network中的XHR,输入save查看XHR多了什么?
这里我们可以看到多了sug,点进去,发现requests url,也就是我们要请求的网址,而requests method是post方式,也就是提交表单,移到最后,我们看见了提交的表单:
在form data中,我们看见表单是一个字典:{'kw':'save'}
,这里的save也就是我们要查询的单词,因此python中这么构造并使用requests.post请求:
#网址和表单
url='https://fanyi.baidu.com/sug'
Form_data = {'kw':word}
#post方式请求网站
response = requests.post(url, data=Form_data,headers=headers)
我们可以试着打印出返回的东西,你会发现是以json格式返回的,因此需要引入内置库json来解析:
content = json.loads(response.text)
在打印出的json格式的文本中我们发现翻译结果在['data'][0]['v']
,接下来提取并返回:
result=content['data'][0]['v']
return result
这样就完成了提交表单了,实现百度和有道翻译了,最后再次附上源码地址:
https://github.com/code-nick-python/translate_app
下次见!