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

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

程序介绍

先上图让大家感受一下

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

具体实现

用百度翻译来举例

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

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

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

headers={"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())

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

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

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

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

将这个代码放在格式化工具中重新排版一下,找到 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:

return

if 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实现翻译软件的详细内容,更多请关注php中文网其它相关文章!

本文转载于:CSDN,如有侵犯,请联系a@php.cn删除

python代码翻译器-Python实现翻译软件相关推荐

  1. python代码翻译器-Python一键转Java?quot;谷歌翻译”你别闹(附链接)

    近日,Reddit 上有网友放出了一张疑似 Google 翻译添加了能让编程语言间互相转换的图片,立即引发数千名程序员网友的跟帖热议.图片显示,Google 翻译中添加了编程语言进行"互译& ...

  2. python代码翻译器-Python编程学习 -- 用十几行代码实现一个翻译器

    前言 本文所用的方法十分简(ruo)易(zhi),非常适用想用Python做点有趣的功能的Python初学者. 先上一波效果图 那么这到底是怎么实现的呢?其实说起来很简单,我们只需要写一个爬虫就行啦! ...

  3. python代码翻译器-python写的翻译代码

    # -*- coding: utf-8 -*- from Tkinter import * import difflib import urllib2 import urllib # python2. ...

  4. python代码块-python代码块

    广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. 开发准备cas 的 python sdk 包含了用于访问和操作 cas ...

  5. python代码格式-Python 代码格式

    原标题:Python 代码格式 在格式方面与其他大众语言相差不大,但也有它独特之处,尤其是代码缩进.在其他的编程语言中,代码缩进大多是为了美观,程序.函数的开始结束都是由花括号来控制的.在Python ...

  6. python代码学习——python文件处理及路径处理

    python代码学习--python文件处理 存储相关 路径处理 os.path 目录的新建与删除 路径操作 绝对/相对路径方式获取路径信息 路径拼接和realpath方法 路径拼接 realpath ...

  7. python代码翻译器-10 行代码,Python 教你自制屏幕翻译工具,有逼格!!

    原标题:10 行代码,Python 教你自制屏幕翻译工具,有逼格!! 1. 场景 大家如果平常遇到不认识的英文,相信大部分的人都会复制内容后,使用翻译软件,或者拷贝到网站上去执行翻译. 当然,对于 I ...

  8. python代码块-Python 代码块

    代码块 骏马金龙https://www.cnblogs.com/f-ck-need-u/p/9925021.html 代码块可以使得一段python代码作为一个单元.一个整体执行. 几种代码块 模块文 ...

  9. 如何保护你的 Python 代码—— 定制 Python 解释器

    0 前言 考虑前文所述的几个方案,均是从源码的加工入手,或多或少都有些不足.假设我们从解释器的改造入手,会不会能够更好的保护代码呢? 由于发行商业 Python 程序到客户环境时通常会包含一个 Pyt ...

  10. Python代码注释 - Python零基础入门教程

    目录 一.什么是代码注释 二.为什么写代码要注释 三.代码注释的方式 1.单行注释,使用英文符号 # 2.多行注释 方法一:英文状态下使用单引号 """ 方法二:英文状态 ...

最新文章

  1. everything每次打开都会扫描_每次启动车,转方向盘都会咔一下,咋回事?
  2. linux常用命令简介- 用户管理及文件属性
  3. Dreamwear如何创建javascript_JavaScript还可以处理日期?你只需要这样做
  4. boost::fusion::detail::and_用法的测试
  5. 安卓--L2T虚拟连接
  6. python none_None关键字,带Python示例
  7. 使用CAJViewer 提取PDF文件中的文字
  8. 炼丹手册——梯度弥散和爆炸
  9. 【ORACLE基础】oracle服务及进程
  10. RHEL/Centos下VSFTPD服务器搭建
  11. easyMule如何导入未完成任务
  12. 安卓对讲机安装滔滔对讲黑屏起麦黑屏对讲设置
  13. 推券客微信公众号查询淘宝优惠券返利系统的设置教程
  14. 如何从XP安装光盘中提取taskmgr.exe
  15. 【毕业设计】基于springboot的个人博客系统
  16. vue引入 wps在线编辑版,可进行 预览,编辑, 打印等功能。
  17. 哈希表 matlab实现,MATLAB中的哈希表
  18. 浪漫主义和革命英雄主义的回忆
  19. Prometheus监控告警搭建(一)
  20. 个人的偏好与擅长的领域

热门文章

  1. php错误报告及设置级别
  2. xp 安装程序在计算机中识别出下列大容量存储设备,大容量存储控制器驱动程序安装步骤[图形]...
  3. XML编辑器oXygen XML Editor V19大版本更新 | 附下载
  4. 城通网盘仿蓝奏网盘源码 附带视频教程
  5. Python turtle库之QQ呲牙表情的绘制
  6. 计算机无法启动printspooler,Win10安装打印机提示“Print Spooler无法启动”怎么办?...
  7. java 无锁并发_高并发情况下怎样尽量实现无锁编程
  8. SQL Server2000安装sp4补丁中的错误与破解
  9. java xml解析 jdom_Java语言中XML的JDom解析方式
  10. 大数据进阶(一):4个最受欢迎的大数据可视化工具(抛砖引玉篇)