python调用百度api应用--小小翻译器

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/translateurl地址通过post方法发送6大请求参数来访问此服务----并生成签名和签名计算

2.进行格式转换并拿到json格式的数据结果--将签名转成utf8和将百度翻译urlutf8解码并读取,用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)    #绝对坐标(11

    Entry1=Entry(root,width=20)

    Entry1.place(x=110,y=1)                                 #绝对坐标(1101

    Label(root,text = '翻译的结果:',width=18).place(x=1,y=20)     #绝对坐标(120

    s=StringVar()                               #一个StringVar()对象  

    s.set("")

    Entry2=Entry(root,width=20,textvariable=s)

    Entry2.place(x=110,y=20)                   #绝对坐标(11020

    Button1=Button(root,text = '翻译',width=8)

    Button1.place(x=40,y=80)    #绝对坐标(4080

    Button2=Button(root,text = '清空',width=8)

    Button2.place(x=110,y=80)   #绝对坐标(11080

    #Label绑定鼠标监听事件

    Button1.bind("<Button-1>",leftClick)                  #翻译按钮

    Button2.bind("<Button-1>",leftClick2)                 #清空按钮

    root.mainloop()

猜你喜欢

转载自www.cnblogs.com/dbslinux/p/11535965.html