Python爬虫+Tkinter制作一个翻译软件的示例

作者:酸菜鱼编程 时间:2023-12-14 07:22:42 

目录
  • 一、运行效果

  • 二、实现方法

    • 1. 爬虫部分

    • 2.Tkinter部分

  • 三、打包

    • 四、代码获取

      今天咱们用Python爬虫和Tkinter界面来做一个翻译软件。

      一、运行效果

      软件实现功能:当我们输入英文或中文时,程序即可打印出来对应的译文,如图:

      Python爬虫+Tkinter制作一个翻译软件的示例

      二、实现方法

      1. 爬虫部分

      实现一键翻译最简单的方式就是爬虫,我们只需将要翻译的内容传入,然后将翻译的结果爬取下来呈现给用户即可。在本文中,我们选择的网站是有道翻译。

      下图这个界面,你在左边输入文字,那么浏览器会把你输入的信息传输给服务器。再在右侧返回对应翻译结果。这就是一个典型的Post操作。

      Python爬虫+Tkinter制作一个翻译软件的示例

      由于之前我们的爬取都是采用的Get方式来获取数据的,并没有用过Post方式,所以这里简单给大家说一下怎么用python发送Post请求:

      发送post请求分为表单类(x-www-form-urlencoded)和json(application/json)格式,data参数支持字典格式和字符串格式,建议使用字典格式,在使用json.dumps()方法把data转换为合法的json格式字符串,或者将data参数赋值给post方法的json参数,data以字符串格式传输需要注意的事项:

      1. 必须是json格式字符串,必须用双引号,k-v之家必须有逗号,布尔值必须是小写的true/false

      2. 不能有中文,直接传字符串不会自动编码

      我们还是按F12打开开发者模式,发现传入的数据并没有在原网页中出现,所以判断这是一个使用异步刷新的网站,所以该URL,应该去XHR中寻找,在XHR中发现了我们传入的数据,如图:

      Python爬虫+Tkinter制作一个翻译软件的示例

      一切准备就绪了,可以开始书写代码了,爬虫部分代码如下:


      url='http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
      #使用post需要一个链接
      data={'i': word,
       'from': 'AUTO',
       'to': 'AUTO',
       'smartresult': 'dict',
       'client': 'fanyideskweb',
       'doctype': 'json',
       'version': '2.1',
       'keyfrom': 'fanyi.web',
       'action': 'FY_BY_REALTIME',
       'typoResult': 'false'}
      #将需要post的内容,以字典的形式记录在data内。
      r = requests.post(url, data)
      #post需要输入两个参数,一个是刚才的链接,一个是data,返回的是一个Response对象
      answer=json.loads(r.text)
      #你可以自己尝试print一下r.text的内容,然后再阅读下面的代码。
      result = answer['translateResult'][0][0]['tgt']
      return result

      2.Tkinter部分

      Tkinter是Python的标准GUI库。Python 使用 Tkinter 可以快速的创建 GUI 应用程序。

      由于 Tkinter 是内置到 python 的安装包中、只要安装好 Python 之后就能 import Tkinter 库、而且 IDLE 也是用 Tkinter 编写而成、对于简单的图形界面 Tkinter 能应付自如。

      代码如下:


      self.window = Tk()
      self.fanyi = YouDaoFanyi()
      self.window.title(u'翻译器')
      #设置窗口大小和位置
      self.window.geometry('310x370+500+300')
      self.window.minsize(310,370)
      self.window.maxsize(310,370)
      #创建一个文本框
      self.result_text1 = Text(self.window,background = 'azure')
      self.result_text1.place(x = 10,y = 5,width = 285,height = 155)
      self.result_text1.bind("<Key-Return>",self.submit1)
      #创建一个按钮
      #为按钮添加事件
      self.submit_btn = Button(self.window,text=u'翻译',command=self.submit)
      self.submit_btn.place(x=205,y=165,width=35,height=25)
      self.submit_btn2 = Button(self.window,text=u'清空',command = self.clean)
      self.submit_btn2.place(x=250,y=165,width=35,height=25)
      #翻译结果标题
      self.title_label = Label(self.window,text=u'翻译结果:')
      self.title_label.place(x=10,y=165)
      #翻译结果
      self.result_text = Text(self.window,background = 'light cyan')
      self.result_text.place(x = 10,y = 190,width = 285,height = 165)

      来看看效果图:

      Python爬虫+Tkinter制作一个翻译软件的示例

      虽然有一些单调,但是能做到这样还是很不错的。

      三、打包

      做好程序后,可以将其打包,这样以后不管电脑上有没有python环境,我们都可以使用这个软件来进行翻译,下面来教大家一个简单的python打包方法。

      首先安装PyInstaller第三方库。


      pip install Pylnstaller

      然后使用cmd,切换到需要打包的python程序的存储目录,然后输入该语句即可完成打包。


      pyinstaller -F -w xxx.py

      四、代码获取

      https://github.com/bigtigeryo/yingyihan

      来源:https://www.cnblogs.com/python147/archive/2021/02/20/14420845.html

      标签:python,爬虫,tkinter,翻译软件
      0
      投稿

      猜你喜欢

    • TensorFlow数据输入的方法示例

      2022-04-27 03:32:03
    • python连接mysql调用存储过程示例

      2024-01-18 01:32:19
    • 常用原生JS兼容性写法汇总

      2024-04-22 22:38:15
    • python 读取修改pcap包的例子

      2023-11-29 23:56:48
    • Python3数据库操作包pymysql的操作方法

      2024-01-28 20:01:34
    • 一个统计表每天的新增行数及新增存储空间的功能

      2024-01-13 22:27:40
    • PyQt5 实现字体大小自适应分辨率的方法

      2022-08-25 03:07:44
    • 基于Python实现微信自动回复功能

      2021-10-17 14:01:54
    • Python打包工具PyInstaller的安装与pycharm配置支持PyInstaller详细方法

      2022-05-20 06:36:55
    • python之链表的反转方式

      2022-02-08 10:20:06
    • 日期垂直排列的两种技巧

      2009-08-28 12:38:00
    • SQL“多字段模糊匹配关键字查询”

      2008-04-24 14:16:00
    • 详解Selenium-webdriver绕开反爬虫机制的4种方法

      2023-09-21 03:30:46
    • 如何了解SQL的执行频率

      2009-08-26 15:17:00
    • vue button的@click方法无效钩子函数没有执行问题

      2024-06-05 10:02:51
    • tensorflow tf.train.batch之数据批量读取方式

      2023-12-08 01:11:51
    • vue中Npm run build 根据环境传递参数方法来打包不同域名

      2024-04-27 16:17:22
    • Python反爬机制-验证码功能的具体实现过程

      2023-02-05 18:53:19
    • 关于MySQL编码问题的经验总结

      2007-08-23 16:10:00
    • Django用数据库表反向生成models类知识点详解

      2024-01-25 15:19:20
    • asp之家 网络编程 m.aspxhome.com