Python练习小程序 利用爬虫制作翻译工具


#coding=utf-8
from tkinter import *
import urllib.request
import urllib.parse
import socket
import json

def translate():
    value = entry1.get();
    if value != "":
        result = get_translate_result(value);
    else:
        result = "";
    v2.set(result);

def get_translate_result(words):
    url = "http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&smartresult=ugc&sessionFrom=dict.top";
    data = get_data(words);
    html = url_open(url, data);
    result = get_json_data(html);
    return result;

def get_data(words):
    data = {}  
    data["type"] = "AUTO";
    data["i"] = words;
    data["doctype"] = "json";
    data["xmlVersion"] = "1.8";
    data["keyfrom:fanyi"] = "web";
    data["ue"] = "UTF-8";
    data["action"] = "FY_BY_CLICKBUTTON";
    data["typoResult"] = "true";
    data = urllib.parse.urlencode(data).encode('utf-8');
    return data;

def url_open(url, data):  
    req = urllib.request.Request(url, data);
    req.add_header("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36");
    response = urllib.request.urlopen(req);
    html = response.read();
    html = html.decode("utf-8");
    return html;

def get_json_data(html):  
    result = json.loads(html);
    result = result['translateResult'];
    result = result[0][0]['tgt'];
    return result;
    
if __name__ == '__main__':
    root =Tk();
    root.title("中英互译");
    #控制窗口的高宽
    root.minsize(350,150);
    root.maxsize(350,150);
    
    ###grid布局###
    
    #使用Frame增加一层容器
    fm1 = Frame(root);
    fm1.grid(row=0, column=0, padx=10, pady=15);
    
    Label1 = Label(fm1,text="输入要翻译的文字:");
    Label1.grid(row=0, column=0, sticky=E, pady=5);
    
    Label2 = Label(fm1,text="翻译之后的结果:");
    Label2.grid(row=1, column=0, sticky=E);
    
    v1 = StringVar();
    entry1 = Entry(fm1, textvariable=v1, width=30);
    entry1.grid(row=0, column=1, columnspan=2, sticky=W);
    
    v2 = StringVar();
    entry2 = Entry(fm1, textvariable=v2, width=30, state="readonly");
    entry2.grid(row=1, column=1, columnspan=2, sticky=W);
    
    #使用Frame增加一层容器
    fm2 = Frame(root);
    fm2.grid(row=1, column=0, padx=10, pady=5);
    
    button1 = Button(fm2,text="翻译",width=10,command=translate);
    button1.grid(row=0, column=0, sticky=E, padx=20);
    
    button2 = Button(fm2,text="退出",width=10,command=root.destroy);
    button2.grid(row=0, column=1, sticky=W);
    
    root.mainloop();
 

初次编写,欢迎提意见。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值