调用百度API(二)——百度翻译

继昨天发的——申请调用百度翻译API(一),今天给大家分享一个简单的应用实例,应用涉及到内容有:python的gui用户界面设计、访问服务器的方法、md5算法加密以及调用百度翻译API

一、预备知识

1、完成开发者申请

完成开发者申请,获得appid和密钥并免费开通服务(具体详见我的上一篇文章——申请调用百度翻译API(一)

2、相关HTTP协议知识

在这里插入图片描述
在这里插入图片描述
3、urllib库的使用

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
4、发送请求

在这里插入图片描述
5、参考官方技术文档:

https://api.fanyi.baidu.com/api/trans/product/apidoc

二、操作实例

在上述官方文档中找到下图中例程
在这里插入图片描述
在技术文档中找到样例,修改appid和密钥之后就可以完成调用了
在这里插入图片描述

三、应用

1、设计目标

设计一个如下图的用户窗口调用百度翻译的API,实现翻译功能
在这里插入图片描述

2、简述

该应用涉及到内容有:python的gui用户界面设计、访问服务器的方法、md5算法加密以及调用百度翻译API

3、程序分析

(1)调用所需要的库
在这里插入图片描述
(2)设计gui
在这里插入图片描述
(3)编写两个按钮事件的具体内容
在这里插入图片描述
在这里插入图片描述
(4)调用百度翻译API的翻译函数
在这里插入图片描述

4.完整代码

from tkinter import *

from urllib import request
from urllib import parse
import json
import hashlib

def translate_word (src_str):
    #simulation browse load host url,get cookie
    URL = "https://api.fanyi.baidu.com/api/trans/vip/translate"
    Form_data = {
    
    'from':'auto','to':'zh','q':src_str,'appid':'填你自己的','salt':'1234567890'}  #创建Form_data字典,存储向服务器发送的data,其中,salt为随机数(任意写)
    Key = '填你自己的'
    m = Form_data['appid'] + src_str + Form_data['salt'] + Key
    m_MD5 = hashlib.md5(m.encode('utf-8'))
    Form_data['sign'] = m_MD5.hexdigest()
    data = parse.urlencode(Form_data).encode('utf-8') #拼接完整请求:http://api.fanyi.baidu.com/api/trans/vip/translate?q=apple&from=en&to=zh&appid=2015063000000001&salt=1435660288&sign=f89f9594663708c1605f3d736d01d2d4

    #或者用这种方式发送请求
    # data ='?appid=' + Form_data['appid'] + '&q=' + parse.quote(Form_data['q']) + '&from=' + Form_data['from'] + '&to=' + Form_data['to'] + '&salt=' + Form_data['salt'] + '&sign=' + Form_data['sign']
    # response = request.urlopen(data)#发送请求,并将得到的响应放入response

    response = request.urlopen(URL,data)     #发送请求,并将得到的响应放入response
    html = response.read().decode('utf-8')   #对网页内容读取并进行解码(从网页控制台源码中可以看到网页的编码方式)
    translate_results = json.loads(html)     #得到的是json类型数据
    print("translate_results(json数据):",translate_results)
    translate_results = translate_results['trans_result'][0]['dst']   #提取json数据中的翻译结果
    print('翻译结果为:',translate_results)
    return translate_results

def leftClick1(event):     #翻译按钮的具体功能
    src_str = Entry1.get()    #得到用户输入的需要翻译的内容
    print('src_str:',src_str)
    vText = translate_word(src_str)
    Entry2.config(Entry2,text = vText)
    Entry2.insert(0,str(vText))

def leftClick2(event):     #清空按钮的具体功能
    Entry1.delete(0,END)   #END必须大写
    Entry2.delete(0,END)

#GUI设计部分:
if __name__ == "__main__":
    root = Tk()
    root.title("单词翻译器")
    root["width"] = 250
    root["height"] = 130

    Label(root,text = "输入要翻译的内容:",width = 15).place(x = 1,y = 1)     #绝对坐标(1,1)
    Entry1 = Entry(root,width = 20)   #添加一个文本框
    Entry1.place(x = 110,y = 1)

    Label(root,text = "翻译的结果:",width = 18).place(x = 1,y = 20)     #绝对坐标(1,1)
    Entry2 = Entry(root,width = 20)  #添加一个文本框
    Entry2.place(x = 110,y = 20)

    Button1 = Button(root,text = "翻译",width = 8)
    Button1.place(x = 40,y = 80)

    Button2 = Button(root,text = "清空",width = 8)
    Button2.place(x = 110,y = 80)

    Button1.bind("<Button-1>",leftClick1)  #将按键和事件绑定
    Button2.bind("<Button-1>",leftClick2)

    root.mainloop()

四、最后

后面还会有一片关于调用百度语音api的分享,但是那个还在研究中,笔者把那个搞清楚了,第一时间分享给大家

其他百度API 系列的调用参见https://blog.csdn.net/weixin_45386875/article/details/113705329

猜你喜欢

转载自blog.csdn.net/weixin_45386875/article/details/113318707