python实现百度和有道翻译-提交表单

版权声明:本文为博主原创文章,未经博主允许不得转载。 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

下次见!

猜你喜欢

转载自blog.csdn.net/weixin_42183408/article/details/88625730
今日推荐