python用爬虫制作英汉词典

只是给大家提供思路,可以将爬取的信息,利用tkinter制作gui界面

这是图片,大家也可以换上自己的图片
请添加图片描述
前面几行需要用到的库要提前下载好

from tkinter import *
import tkinter as tk
from urllib import request
from urllib import parse
import json
from PIL import Image,ImageTk

class Dict(Frame):

    # 初始化

    def __init__(self, parent=None, **kw):

        Frame.__init__(self, parent, kw)

        self.entryVar = StringVar()

        self.labelVar = StringVar()

        self.labelVar.set('请输入单词进行翻译')
		#file里面填写图片路径,同一目录下直接写图片名称即可
        self.photo = ImageTk.PhotoImage(file = 'yd2.jpg')

        self.makeframe()    

    # Frame内部的部件创建

    def makeframe(self):

        # 输入框,用于输入待翻译的字符串

        entry = Entry(show = None, textvariable = self.entryVar)

        entry.grid(row = 0, column = 0, columnspan = 5, sticky = W, padx = 5, pady = 5)

        # 获取焦点

        entry.focus_set()

        # bind函数,当输入字符串后按Enter建即可翻译

        entry.bind('<Return>', self.translate_bind)        

        # 用于显示结果

        label = Label(textvariable = self.labelVar).grid(row = 1, rowspan = 3, columnspan = 5, sticky = NW, padx = 5, pady = 5)


        # 翻译button

        fanyi_btn = Button(text = '  翻 译  ', command = self.translate)

        fanyi_btn.grid(row = 0, column = 5, padx = 5, pady = 5)

        fanyi_btn.bind("<Return>", self.translate)

        

        # 清空输入框和显示结果栏

        clear_btn = Button(text = '  清 空  ', command = self.clearall).grid(row = 1, column = 5, padx = 5, pady = 5)

       
        # 用于显示youdao logo

        label2 = Label(image = self.photo)

        label2.grid(row = 0, column = 6, rowspan = 3, columnspan = 3, sticky = E+N+W+N, pady = 5)
    

    # bind函数

    def translate_bind(self, event):

        if self.entryVar.get() == '':

            self.labelVar.set('输入框内容为空')

        else:

            value = self.entryVar.get()

            result = self.youdaoTranslate(value)

            self.labelVar.set(value + '\n\n' + result)  

            self.entryVar.set('')    

    # 事件函数

    def translate(self):

        if self.entryVar.get() == '':

            self.labelVar.set('输入框内容为空')

        else:

            value = self.entryVar.get()

            result = self.youdaoTranslate(value)

            self.labelVar.set(result)    

    # 清空函数

    def clearall(self):

        self.labelVar.set('')

        self.entryVar.set('')

    # 翻译主函数,就于在网络上爬取翻译结果 

    def youdaoTranslate(self, value):

        # Request URL

        url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'

        # user agent

        header = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36'}

        # 待提交准备Post给url的Data:定义为dict

        form_Data = {}

        form_Data['i'] = value

        form_Data['from'] = 'AUTO'

        form_Data['to'] = 'AUTO'

        form_Data['smartresult'] = 'dict'

        form_Data['client'] = 'fanyideskweb'

        form_Data['doctype'] = 'json'

        form_Data['version'] = '2.1'

        form_Data['keyfrom'] = 'fanyi.web'

        form_Data['action'] = 'FY_BY_REALTIME'

        form_Data['typoResult'] = 'false'

        # 使用urlencode方法转换标准格式 

        data = parse.urlencode(form_Data).encode('utf-8')

        req = request.Request(url, data, headers = header)

        response = request.urlopen(req)

        # html已为json形式

        html = response.read().decode('utf-8')

        # 使用JSON

        translate_result = json.loads(html)

        # 找到翻译结果

        translate_result_main = translate_result['translateResult'][0][0]['tgt']

        # 返回翻译结果

        return translate_result_main

            

if __name__ == '__main__':
    root = Tk()
    root.title('翻译')
    root.resizable(0,0)
    app = Dict(root)
    app.grid()

    root.mainloop()

运行结果

在这里插入图片描述
在这里插入图片描述

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大学生编程地

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值