python代码翻译器-Python实现翻译软件
本篇文章主要讲讲述了用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实现翻译软件相关推荐
- python代码翻译器-Python一键转Java?quot;谷歌翻译”你别闹(附链接)
近日,Reddit 上有网友放出了一张疑似 Google 翻译添加了能让编程语言间互相转换的图片,立即引发数千名程序员网友的跟帖热议.图片显示,Google 翻译中添加了编程语言进行"互译& ...
- python代码翻译器-Python编程学习 -- 用十几行代码实现一个翻译器
前言 本文所用的方法十分简(ruo)易(zhi),非常适用想用Python做点有趣的功能的Python初学者. 先上一波效果图 那么这到底是怎么实现的呢?其实说起来很简单,我们只需要写一个爬虫就行啦! ...
- python代码翻译器-python写的翻译代码
# -*- coding: utf-8 -*- from Tkinter import * import difflib import urllib2 import urllib # python2. ...
- python代码块-python代码块
广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. 开发准备cas 的 python sdk 包含了用于访问和操作 cas ...
- python代码格式-Python 代码格式
原标题:Python 代码格式 在格式方面与其他大众语言相差不大,但也有它独特之处,尤其是代码缩进.在其他的编程语言中,代码缩进大多是为了美观,程序.函数的开始结束都是由花括号来控制的.在Python ...
- python代码学习——python文件处理及路径处理
python代码学习--python文件处理 存储相关 路径处理 os.path 目录的新建与删除 路径操作 绝对/相对路径方式获取路径信息 路径拼接和realpath方法 路径拼接 realpath ...
- python代码翻译器-10 行代码,Python 教你自制屏幕翻译工具,有逼格!!
原标题:10 行代码,Python 教你自制屏幕翻译工具,有逼格!! 1. 场景 大家如果平常遇到不认识的英文,相信大部分的人都会复制内容后,使用翻译软件,或者拷贝到网站上去执行翻译. 当然,对于 I ...
- python代码块-Python 代码块
代码块 骏马金龙https://www.cnblogs.com/f-ck-need-u/p/9925021.html 代码块可以使得一段python代码作为一个单元.一个整体执行. 几种代码块 模块文 ...
- 如何保护你的 Python 代码—— 定制 Python 解释器
0 前言 考虑前文所述的几个方案,均是从源码的加工入手,或多或少都有些不足.假设我们从解释器的改造入手,会不会能够更好的保护代码呢? 由于发行商业 Python 程序到客户环境时通常会包含一个 Pyt ...
- Python代码注释 - Python零基础入门教程
目录 一.什么是代码注释 二.为什么写代码要注释 三.代码注释的方式 1.单行注释,使用英文符号 # 2.多行注释 方法一:英文状态下使用单引号 """ 方法二:英文状态 ...
最新文章
- everything每次打开都会扫描_每次启动车,转方向盘都会咔一下,咋回事?
- linux常用命令简介- 用户管理及文件属性
- Dreamwear如何创建javascript_JavaScript还可以处理日期?你只需要这样做
- boost::fusion::detail::and_用法的测试
- 安卓--L2T虚拟连接
- python none_None关键字,带Python示例
- 使用CAJViewer 提取PDF文件中的文字
- 炼丹手册——梯度弥散和爆炸
- 【ORACLE基础】oracle服务及进程
- RHEL/Centos下VSFTPD服务器搭建
- easyMule如何导入未完成任务
- 安卓对讲机安装滔滔对讲黑屏起麦黑屏对讲设置
- 推券客微信公众号查询淘宝优惠券返利系统的设置教程
- 如何从XP安装光盘中提取taskmgr.exe
- 【毕业设计】基于springboot的个人博客系统
- vue引入 wps在线编辑版,可进行 预览,编辑, 打印等功能。
- 哈希表 matlab实现,MATLAB中的哈希表
- 浪漫主义和革命英雄主义的回忆
- Prometheus监控告警搭建(一)
- 个人的偏好与擅长的领域
热门文章
- php错误报告及设置级别
- xp 安装程序在计算机中识别出下列大容量存储设备,大容量存储控制器驱动程序安装步骤[图形]...
- XML编辑器oXygen XML Editor V19大版本更新 | 附下载
- 城通网盘仿蓝奏网盘源码 附带视频教程
- Python turtle库之QQ呲牙表情的绘制
- 计算机无法启动printspooler,Win10安装打印机提示“Print Spooler无法启动”怎么办?...
- java 无锁并发_高并发情况下怎样尽量实现无锁编程
- SQL Server2000安装sp4补丁中的错误与破解
- java xml解析 jdom_Java语言中XML的JDom解析方式
- 大数据进阶(一):4个最受欢迎的大数据可视化工具(抛砖引玉篇)