python调用百度api应用--小小翻译器
2020-12-13 13:44
标签:query 创建 常用 loop err api rand parser string urllib库的使用 urllib库是python标准库中最常用的PYthon网页访问的模块,它可以让用户像访问本地文本文件一样读取网页的内容。 urlib.request模块:用来打开和读取url urlib.error模块:包含一些由urlib.request产生的错误,可用try进行捕捉 urlib.parse模块:包含一些解析url的方法 urlib.robotparser模块:用来解析robots.txt文本文件 案例小小翻译器: 设计思路: 1.使用百度翻译向http://api.fanyi.baidu.com/api/trans/vip/translate此url地址通过post方法发送6大请求参数来访问此服务----并生成签名和签名计算 2.进行格式转换并拿到json格式的数据结果--将签名转成utf8和将百度翻译url用utf8解码并读取,用json格式打开百度翻译url 3.单击翻译事件:获取用户输入--并进行翻译 跟踪变量值变化,并随时更新值显示在界面上 4.清空事件 5.界面布局设计 from tkinter import * from urllib import request from urllib import parse import json import hashlib import random def translate_Word(en_str): URL = ‘http://api.fanyi.baidu.com/api/trans/vip/translate‘ #en_str=input("请输入要翻译的内容:") #创建Form_Data字典,存储向服务器发送的Data #Form_Data={‘from‘:‘en‘,‘to‘:‘zh‘,‘query‘:en_str,‘transtype‘:‘hash‘} Form_Data = {} Form_Data[‘from‘] = ‘en‘ Form_Data[‘to‘] = ‘zh‘ Form_Data[‘q‘] = en_str #要翻译数据 Form_Data[‘transtype‘] = ‘hash‘ Form_Data[‘appid‘] = ‘20151113000005349‘ #申请的APP ID Form_Data[‘salt‘] = str(random.randint(32768, 65536)) #随机数 Key="osubCEzlGjzvw8qdQc41" #平台分配的密钥 m=Form_Data[‘appid‘]+en_str+Form_Data[‘salt‘]+Key m_MD5 = hashlib.md5(m.encode(‘utf8‘)) Form_Data[‘sign‘] = m_MD5.hexdigest() data = parse.urlencode(Form_Data).encode(‘utf-8‘) #使用urlencode方法转换标准格式 response = request.urlopen(URL,data) #传递Request对象和转换完格式的数据 html = response.read().decode(‘utf-8‘) #读取信息并解码 translate_results = json.loads(html) #使用JSON print(translate_results) #打印出JSON数据 translate_results = translate_results[‘trans_result‘][0][‘dst‘] #找到翻译结果 print("翻译的结果是:%s" % translate_results) #打印翻译信息 return translate_results def leftClick(event): #翻译按钮事件函数 #print( "x轴坐标:", event.x) #print( "y轴坐标:", event.y) en_str=Entry1.get() #获取要翻译的内容 print(en_str) vText=translate_Word(en_str) #Entry2.config(Entry2,text=vText) #修改提示标签文字 s.set("") Entry2.insert(0,vText) def leftClick2(event): #清空按钮事件函数 s.set("") #Entry2.config(Entry2,text=vText) #修改提示标签文字 Entry2.insert(0,"") 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) #绝对坐标(110,1) Label(root,text = ‘翻译的结果:‘,width=18).place(x=1,y=20) #绝对坐标(1,20) s=StringVar() #一个StringVar()对象 s.set("") Entry2=Entry(root,width=20,textvariable=s) Entry2.place(x=110,y=20) #绝对坐标(110,20) Button1=Button(root,text = ‘翻译‘,width=8) Button1.place(x=40,y=80) #绝对坐标(40,80) Button2=Button(root,text = ‘清空‘,width=8) Button2.place(x=110,y=80) #绝对坐标(110,80) #给Label绑定鼠标监听事件 Button1.bind(" Button2.bind(" root.mainloop() python调用百度api应用--小小翻译器 标签:query 创建 常用 loop err api rand parser string 原文地址:https://www.cnblogs.com/dbslinux/p/11535965.html