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("<Button-1>",leftClick) #翻译按钮
Button2.bind("<Button-1>",leftClick2) #清空按钮
root.mainloop()
原文地址:https://www.cnblogs.com/dbslinux/p/11535965.html