Python实现翻译小工具

一、背景

利用Requests模块获取有道词典web页面的post信息,BeautifulSoup来获取需要的内容,通过tkinter模块生成gui界面。

二、代码

fanyi.py代码如下:

#!/bin/env python
# -*- coding:utf-8 -*-
# _author:kaliarch
import requests
import urllib.parse
import time
import random
import hashlib
import json

class search(object):
    def __init__(self):
        self.url = ‘http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule‘

    def getData(self,search_name):
        # salt =i = "" + ((new Date).getTime() + parseInt(10 * Math.random(), 10)
        salt = ((time.time() * 1000) + random.randint(1,10))
        # sign = n.md5("fanyideskweb" + t + i + "ebSeFb%=XZ%T[KZ)c(sy!")
        sign_text = "fanyideskweb" + search_name + str(salt) + "ebSeFb%=XZ%T[KZ)c(sy!"
        sign = hashlib.md5((sign_text.encode(‘utf-8‘))).hexdigest()
        paydata = {
            ‘i‘: search_name,
            ‘from‘: ‘AUTO‘,
            ‘to‘: ‘AUTO‘,
            ‘smartresult‘: ‘dict‘,
            ‘client‘: ‘fanyideskweb‘,
            ‘salt‘: salt,
            ‘sign‘: sign,
            ‘doctype‘: ‘json‘,
            ‘version‘: ‘2.1‘,
            ‘keyfrom‘: ‘fanyi.web‘,
            ‘action‘: ‘FY_BY_CLICKBUTTION‘,
            ‘typoResult‘: ‘false‘
        }
        return paydata

    def getHeader(self):
        header = {
            ‘Host‘: ‘fanyi.youdao.com‘,
            ‘Referer‘: ‘http://fanyi.youdao.com/‘,
            ‘Content-Type‘: ‘application/x-www-form-urlencoded; charset=UTF-8‘,
            ‘User-Agent‘: ‘Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36‘,
            ‘Cookie‘: ‘[email protected]; OUTFOX_SEARCH_USER_ID_NCOO=129549097.60835753; UM_distinctid=15ff309f18ddc-094cb5494ad815-5d4e211f-1fa400-15ff309f18e449; _ga=GA1.2.184261795.1517119351; __guid=204659719.2556877880764680700.1518435624954.942; JSESSIONID=aaa3A5BLhtTrh4TPX_mgw; monitor_count=2; ___rl__test__cookies=1518488731567‘
        }
        return header

    def getRequest(self,paydata,header):
        _data = urllib.parse.urlencode(paydata).encode(‘utf-8‘)
        _header = header
        response = requests.post(self.url,data=_data,headers=_header)
        return response.text

    def getResult(self,response):
        result_text = json.loads(response)
        #src = result_text[‘translateResult‘][0][0][‘src‘]
        tgt = result_text[‘translateResult‘][0][0][‘tgt‘]
        return tgt

    def main(self,search_name):
        app = search()
        paydata = app.getData(search_name)
        header = app.getHeader()
        response = app.getRequest(paydata, header)
        tgt = app.getResult(response)
        return tgt

windows.py代码如下:

#!/bin/env python
# -*- coding:utf-8 -*-
# _author:kaliarch

import tkinter as tk
from fanyi import search

class application:
    def __init__(self):
        self.windows = tk.Tk()
        self.windows.title("翻译小工具")
        self.windows.geometry("280x350+700+300")

        #提交按钮
        self.submit_btn = tk.Button(self.windows, text="查询",command=self.submit)
        self.submit_btn.place(x=220, y=10, width=50, height=25)

        # 定义输入框
        self.entry = tk.Entry(self.windows)
        self.entry.place(x=10, y=10, width=200, height=40)

        #输出内容
        self.result_text = tk.Text(self.windows, background="#ccc")
        self.result_text.place(x=10, y=90, width=260, height=245)

        # 翻译结果标题
        self.title_label = tk.Label(self.windows, text="翻译结果:")
        self.title_label.place(x=10, y=65)
        self.search_result = search()

    def submit(self):
        #1.获取用户输入
        context = self.entry.get()

        #2.利用有道翻译
        result = self.search_result.main(context)
        #3.输出
        self.result_text.delete(1.0,tk.END)
        self.result_text.insert(tk.END,result)

    def run(self):
        self.windows.mainloop()

if __name__ == ‘__main__‘:
    winapp = application()
    winapp.run()

三、效果展示

运行windows.py,输入想要翻译的内容,点击翻译即可查看翻译结果

原文地址:http://blog.51cto.com/kaliarch/2072150

时间: 2024-11-12 23:26:42

Python实现翻译小工具的相关文章

python制作英语翻译小工具

用python爬虫可以制作英语翻译小工具.来看下代码吧- import requests,json #函数封装 def translator(): session=requests.session() i=input('请问你要翻译什么?') url='http://fanyi.youdao.com/translate' headers={ 'Referer': 'http://fanyi.youdao.com/', 'User-Agent': 'Mozilla/5.0 (Macintosh;

[python]Google翻译小程序

工程中要用到一个翻译的功能,也就是提交到Google翻译后,获取返回的结果. 首先摸清Google翻译的脉络: request处理 提交翻译后,查看request和response分别是什么内容: 首先我们得到了提交的URL url = httl://translate.google.cn/translate_a/t 还有如上的提交表单,分析可知: sl = source language = en(english) tl = target language = zh-CN(简体中文) 以及编码

C#借助谷歌翻译实现翻译小工具(一)基本功能实现

软件效果: 实现原理很简单,就是封装谷歌翻译网站:http://translate.google.cn/,一个WebBrowser"肢解"谷歌翻译网站的HtmlElement元素,删除不要的,留下需要的就是了,没什么难度 实现步骤: 一个winform窗体+一个WebBrowser控件   设置WebBrowser的URL为谷歌翻译网站,删除不需要的html元素 全部代码: public partial class Form1 : Form { public Form1() { Ini

案例:用python实现翻译小程序

案例:翻译小程序 #实现一个翻译小程序 #1 可以查询单词 #2 可以自定义补充单词解释 #3 可以删除某个单词 print('欢迎来到大宝dayday见小词典'.center(30,'-')) orig_dict = {'中文':'chinese','代码':'code','字典':'dict','英语':'english'} query = input('请输入你要查询的中文:') # 判断是否存在 if(orig_dict.get('query')): print(f'你查询的中文:{qu

命令行的翻译小工具--python

1 #!/usr/bin/env python 2 #-*- coding: utf-8 -*- 3 'a translate module ' 4 import sys 5 import urllib2 6 import json 7 def translate(word): 8 url="http://openapi.baidu.com/public/2.0/translate/dict/simple?client_id=F1jr7p2FxnbrO2AkqRubv0uW&q=&quo

Python制作有道翻译小工具

该工具主要是利用了爬虫,爬取web有道翻译的内容. 然后利用简易GUI来可视化结果. 首先我们进入有道词典的首页,并点击翻译结果的审查元素 之后request响应网页,并分析网页,定位到翻译结果. 使用tkinter来制作一个建议的GUI 期间遇到的一个问题则是如何刷新翻译的结果,否则的话会在text里一直累加翻译结果. 于是,在mainloop里面用到了T1.delete方法,来每次删除TEXT里的内容. import urllib.request import urllib.parse im

用 pyqt4 编写的一个翻译小工具

有时候我们在开发时遇到一些陌生的英文单词或者不容易看出某些长句的中文意思时该怎么办呢?打开桌面上的翻译软件?打开浏览器里收藏着的翻译网址或者直接贴上百度的搜索框去查?这些方法固然可以,还很常见,但如果是 linux 系统的话,很难找到像 windows 上那些公司级别来开发的成熟的翻译软件,所以只能打开浏览器来查了.浏览器一般都会装上一些翻译插件,比如我常用的 chrome 的 划词翻译,直接用这些插件来进行翻译比起打开一个翻译网站或者百度google搜索要更快,毕竟因为加载的内容更少,但这终究

纯Python综合图像处理小工具(3)10种滤镜算法

<背景>  滤镜处理是图像处理中一种非常常见的方法.比如photoshop中的滤镜效果,除了自带的滤镜,还扩展了很多第三方的滤镜效果插件,可以对图像做丰富多样的变换:很多手机app实现了实时滤镜功能,最有名的当属Instagram. 滤镜的原理,常见的是针对数字图像的像素矩阵,使用一个nxn的方形矩阵做滤波器(即kernel,常见的如3x3,5x5等),对该像素矩阵进行遍历,遍历后的图像就是输出图像,如果算法经过优化,遍历的速度足够快,那就是实时滤镜(live filter),可以实时预览图像

纯Python 综合图像处理小工具 (1)

平时工作经常需要做些图像分析,需要给图像分通道,计算各个通道的直方图分布特点,这个事儿photoshop也能做,但是用起来不方便,且需要电脑上安装有PS软件,如果用OpenCV, 更是需要在visual studio上做很多配置工作.本文充分利用python的便携性和轻量级特点,力图实现一个脚本,到处处理的目标.           1.将待处理图片命名为1.jpg和本文python脚本文件放入同一文件夹:             2.运行python脚本,可以获得分通道图片及相应的直方图.