Python实现翻译软件

本篇文章主要讲讲述了用Python实现翻译软件,超级实用,赶紧将代码收藏起来试试吧,希望对你学习Python有所启发哦!

前两天吃了平哥的一波狗粮,他给女朋友写了一个翻译软件,自己真真切切的感受到了程序员的浪漫。在学习requests请求的时候做过类似的Demo,给百度翻译发送一个post请求可以实现任意词组的翻译,利用周六周日将那段代码进行了进一步优化加了一个交互界面,有了今天的翻译软件。

程序介绍

先上图让大家感受一下

640?wx_fmt=png

程序的功能很简单,可以从三个主流翻译器中选择任意的翻译器进行单词和句子的翻译,使用 PyQt5 模块实现人机交互,用requests模块发送请求,并将翻译结果返回给用户。

具体实现

用百度翻译来举例

任意的进行翻译来查看页面信息。

640?wx_fmt=png

从图片中可以发现这是一个post请求,请求头的数据在的图片中也有较清楚的显示。

640?wx_fmt=png

我们需要在添加上面的数据,其中 simple_means_flag 为固定量,query 代表待翻译的词,根据这些信息我们写个简单的代码测试一下。

import requestsheaders={"User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.80 Safari/537.36"}post_data={'query': 'Ahab杂货铺','from': 'zh','to': 'en','sign': '413120.175857','token':'64d8ce70799b54833f56b43f9d6eb3b4'}post_url="https://fanyi.baidu.com/v2transapi"r=requests.post(post_url,data=post_data,headers=headers)print(r.content.decode())

登录后复制

运行以后输出下面的结果:

640?wx_fmt=png

出现上面错误的原因就是sign和token这两个参数搞的鬼,先说token,token可以直接在百度翻译主页的源码里找到:

640?wx_fmt=png

因为时间戳不同步所以直接请求百度翻译的主页获取到的 token 是用不了的,只能人为地把网页当前显示的 token 值复制下来然后赋值给代码里的 token。

sign 参数是根据翻译的内容而在前台生成的,如果发送的请求中,query 内容和 sign 不匹配,则收到的响应是 error。下面要做的就是破解百度翻译 sign。sign 是由一个 js 文件生成的,下图就是生成  sign 的 js 文件。

640?wx_fmt=png

将这个代码放在格式化工具中重新排版一下,找到 sign 执行函数的代码,再用 execjs,执行这段 js 代码,在计算过程中还需要 gtk 的值,这个值在翻译首页获取一下就可以。

js = js.replace(

登录后复制

上边的步骤完成以后我们就可以愉快的进行翻译了。

图形化界面用的是 pyQt5 这个模块,实现起来不难。

class Demo(QWidget):def __init__(self, parent=None):super().__init__()elf.setWindowTitle('翻译软件-公众号: Ahab杂货铺')self.Label1 = QLabel('原文')self.Label2 = QLabel('译文')self.LineEdit1 = QLineEdit()self.LineEdit2 = QLineEdit()self.translateButton1 = QPushButton()self.translateButton2 = QPushButton()self.translateButton3 = QPushButton()self.translateButton1.setText('百度翻译')self.translateButton2.setText('有道翻译')self.translateButton3.setText('谷歌翻译')self.grid = QGridLayout()self.grid.setSpacing(12)self.grid.addWidget(self.Label1, 1, 0)self.grid.addWidget(self.LineEdit1, 1, 1)self.grid.addWidget(self.Label2, 2, 0)self.grid.addWidget(self.LineEdit2, 2, 1)self.grid.addWidget(self.translateButton1, 1, 2)self.grid.addWidget(self.translateButton2, 2, 2)self.grid.addWidget(self.translateButton3, 3, 2)self.setLayout(self.grid)self.resize(400, 150)self.translateButton1.clicked.connect(lambda : self.translate(api='baidu'))self.translateButton2.clicked.connect(lambda : self.translate(api='youdao'))self.translateButton3.clicked.connect(lambda : self.translate(api='google'))self.bd_translate = baidu()elf.yd_translate = youdao()self.gg_translate = google()def translate(self, api='baidu'):word = self.LineEdit1.text()if not word:       returnif api == 'baidu':      results = self.bd_translate.translate(word)elif api == 'youdao':      results = self.yd_translate.translate(word)elif api == 'google':       results = self.gg_translate.translate(word)else:      raise RuntimeError('Api should be  or  or ...')for result in results:      self.LineEdit2.setText(result)

登录后复制

 相关教程:Python视频教程

以上就是Python实现翻译软件的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2533118.html

(0)
上一篇 2025年3月5日 21:08:46
下一篇 2025年3月5日 21:08:54

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • Python学习之代理模式

    本篇文章主要介绍python实现代理模式,用了一个有趣的例子写了一个示范代码,具有一定参考价值,感兴趣的朋友可以了解一下,希望对您有帮助。 代理模式的定义:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直…

    编程技术 2025年3月5日
    000
  • python3学习之异常处理及文件的各种操作

    本篇文章主要讲述的是python3的异常处理以及文件的各种操作,具有一定的收藏价值,感兴趣的朋友可以了解一下,希望对你有所帮助。 异常处理:是为了避免程序因为一个小问题而导致程序终止 try: 可能出现异常的代码块 except: 立即学习…

    编程技术 2025年3月5日
    200
  • scrapy实现新浪微博爬虫

    本篇文章主要讲述了用scrapy实现新浪微博爬虫,具有一定的参考价值,感兴趣的朋友可以了解一下 ,看完不妨自己去试试哦! 最近因为做毕设的原因,需要采集一批数据。本着自己动手的原则,从新浪微博上采集到近百位大家耳熟能详的明星14-18年的微…

    2025年3月5日 编程技术
    200
  • python怎么写图形界面gui

    python最大的特点就在于她的快速开发功能。作为一种胶水型语言,python几乎可以渗透在我们编程过程中的各个领域。这里我简单介绍一下用 python进行gui开发的一些选择。 这三种是Python常用的GUI开发库: Tkinter: …

    2025年3月5日
    200
  • Python的用户登录接口编制以及实现流程图

    本篇文章将和大家分享的代码是关于python的用户登录接口编制,以及其实现流程图,感兴趣的朋友可以了解一下,希望能对你有所帮助。 实现代码如下: # Author: Steven Zeng”’作业:编写登录接口输入用户名密码认证成功后显示…

    2025年3月5日
    200
  • Python学习之图解变量与赋值

    Python是一门独特的语言,与C语言有很大区别,初学Python很多萌新表示对变量与赋值不理解,学过C的都知道,给变量赋值时,需要先指定数据类型,同时会开辟一块内存区域,用于存储值,例如: inta =1; a 就是内存空间中的一小块区域…

    2025年3月5日 编程技术
    200
  • 如何用Python实现微信消息防撤回

    微信(WeChat)是腾讯公司于2011年1月21日推出的一款社交软件,今天将带大家了解一下用Python实现微信防撤回,感兴趣的朋友可以了解一下。 一、背景介绍 产品的更新迭代必然会伴随着功能的推出和下线,今天我们要讲的便是微信在2014…

    2025年3月5日 编程技术
    200
  • python的解释器是什么?

    python解释器是解释python脚本执行的程序,当开发者在编写python代码保存后,就会得到一个以“.py”为扩展名的文本文件,若要运行此文件,就需要python解释器去执行“.py”文件。 python解释器是解释python脚本执…

    2025年3月5日
    200
  • python是什么语言写的?

    python是C语言编写的。python是一种面向对象的动态类型语言,它的底层是用C语言写的,很多标准库和第三方库也都是用C语言写的;Python解释器易于扩展,可以使用C语言或C++(或者其他可以通过C调用的语言)扩展新的功能和数据类型。…

    2025年3月5日
    200
  • python能做什么工作

    学习python能做的工作有:1、软件开发;2、数据挖掘;3、游戏开发;4、大数据分析;5、Python Web网站工程师;6、系统运维;7、Python自动化测试等等。 推荐:《python教程》 python是一门很好的编程语言,很多人…

    2025年3月5日
    200

发表回复

登录后才能评论