基于python爬虫原理的桌面翻译小软件

数据分析 专栏收录该内容
1 篇文章 0 订阅

python桌面翻译软件

本文任务是制作一个python桌面翻译小程序,主要内容是
(1)编写gui用户界面。
(2)利用爬虫的原理从在线翻译中抓取翻译结果。
(3)利用Pyinstaller将python程序打包成exe可执行文件,体验一下不用python解释器也能运行python程序的乐趣。

gui用户界面设计入门不难,此处不作说明。
python爬虫的基本流程一般分为四个步骤
1)发送请求:通过HTTP库向目标站点发起请求,也就是发送一个Request,请求可以包含额外的header等信息,等待服务器响应;服务器返回状态码200则请求成功,反之则失败。
2)获取相应的内容:如果服务器能正常响应,会得到一个响应结果Response,Response的内容便是所要获取的页面内容,类型可能是HTML,Json字符串,二进制数据(图片或者视频)等类型。我们再从中解析想要的内容格式。
3)解析内容:得到的内容可能是HTML,可以用正则表达式,页面解析库进行解析,可能是Json,可以直接转换为Json对象解析,可能是二进制数据,可以做保存或者进一步的处理。
4)保存想要的数据:保存的数据形式多种多样,像图片,视频,数字,字符等。于是我们就可以对挖掘到的数据做进一步数据分析。

Requests的post请求
向指定资源提交数据,请求服务器进行处理(例如提交表单或者上传文件)。数据被包含在请求本文中。一般请求格式response = requests.post(url, data,header,timeout)。
Request Headers部分各个字段的功能
这里介绍用到的字段。

Accept指定客户端能够接受的数据类型
Connection表示是否需要持久连接。(HTTP 1.1默认进行持久连接)
CookieHTTP请求发送时,会把保存在该请求域名下的所有cookie值一起发送给web服务器。
Host指定请求的服务器的域名和端口号
User-AgentUser-Agent的内容包含发出请求的用户信息

我在桌面翻译小软件制作中,如果没有向服务器发送headers字段,返回的是错误信息。
如何获取网站的headers信息
点击鼠标右键,打开网站源代码,点击网络:
在这里插入图片描述
从中找到post请求网络响应的结果。点击标头,相应的headers信息都在里面。将信息复制黏贴到代码中,做成词典。
在这里插入图片描述点击正文,会得到请求正文和响应正文:f是未翻译的语言(如:中文),t是翻译后的语言(如:英文),w是翻译的内容(如:我爱你)。响应正文的格式为:
{“status”:1,“content”:{“from”:“zh-CN”,“to”:“en-US”,“out”:“I love you”,“vendor”:“ciba”,“err_no”:0}}。我们再从中提取出想要的信息(I love you)就完成了。爬虫爬取其他网站的信息的原理过程很大程度上类似这样。注意:向服务器发送的信息要确保正确,否则会收到错误的响应信息。

#导入爬虫库,gui用户界面库
import requests
from tkinter import *
from tkinter import messagebox
# 执行翻译的函数
def translate():
    # 获取text控件,从头到位:‘0.0’,END.
    content = text.get('0.0', END)
    # 去除text输入前面的空格
    con = content.strip()
    if con == '':
        # 如果输入为空,则发出提示。
        messagebox.showinfo('提示', message="内容为空!请输入翻译的内容!")
        return
    else:
        # 翻译的网址  
        url = 'http://fy.iciba.com/ajax.php?a=fy'
        data = {
            'f': 'auto',
            # AUTO说明可以翻译任意可识别的语言(比如汉语、英语、日语……)
            't': 'auto',
            # 想要翻译的内容
            'w': con        
        }
        # 如果不用请求头,会爬取到错误信息。
        headers = {
            "Accept": "application/json, text/javascript, */*; q=0.01",
            "Connection": "Keep-Alive",
            "Cookie": "UM_distinctid = 17154aac73f61a - 066a45574b4ee1 - 71415a3a - e1000 - 17154aac743402;CNZZDATA1256573702 = 396385065 - 1586261257 - % 7C1586261257",
            "Host": "fy.iciba.com",
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.18363"
        }
        # 发送请求,得到服务器的响应,即翻译的结果
        # json格式可以解析爬取的中文文本
        response = requests.post(url, data=data, headers=headers).json()
        # 将翻译的结果插放在entry的后面
        Var.set(response['content']['out'])
        return

def delete():
    # 若用户点击按键,则删除entry中全部内容
    Var.set('')
    
def instructions():
# messagebox的的简单使用
    messagebox.showinfo('软件说明', message="这个是根据爬取词霸翻译结果的原理制作的python桌面小软件,方便翻译一些比较简短的内容。软件用python程序制作,设计比较简单,处于试验阶段,尚有许多不足之处。")

# 下面是tkinter制作的简单gui用户界面
window = Tk()
window.title('翻译软件')
window["bg"] = "pink"

label1 = Label(window, text="请输入你要翻译的内容")
label1.grid()       # grid()是对控件的排版方式之一

text = Text(window, font=('微软雅黑', 12), width=50, height=10)
text.grid(row=1, column=0)

label2 = Label(window, text="翻译的结果")
label2.grid(row=2, column=0)

Var = StringVar()
entry = Entry(window, font=('微软雅黑', 12), textvariable=Var)
entry.grid(row=3, column=0)

# 点击button1会执行翻译的功能。
button1 = Button(window, text='Translate', width=10, command=translate)
button1.grid(row=4, column=0)

# 点击button2会执行清空翻译结果
button2 = Button(window, text='Delete', width=10, command=delete)
button2.grid(row=5, column=0)

#点击button3会弹出提示界面。
button3 = Button(window, text='About', width=10, command=instructions)
button3.grid(row=6, column=0)

# 禁止用户改变软件界面的大小
window.resizable(0, 0)
# 这句代码作用是持续执行gui用户界面,直到用户点击关闭键。
window.mainloop()

运行该翻译程序,出现如下图所示的界面。
软件的用户界面

下面结束将python程序打包成.exe可执行文件:
①先将要打包的python程序(我的是gui.py文件)存到一个文件夹:
在这里插入图片描述
②同时点击鼠标右键和Shift键,然后点击[在此处打开Powershell窗口(S)]:
在这里插入图片描述③在弹出的窗口运行命令:Pyinstaller -F -w gui.py。Pyinstaller是用来打包python文件的,-F的作用是在生成的dist文件夹里只生成一个可执行文件exe,减少文件多带来的复杂性。-w的作用运行文件时不需要命令行窗口(一个黑色的窗口)。后面是需要打包的python程序文件名并加上后缀.py。
在这里插入图片描述
最后运行成功即说明打包成功。生成的可执行文件就在dist的文件夹里面。
在这里插入图片描述
双击即可运行,于是就可以实现翻译功能,享受python制作桌面小软件过程的乐趣了。但是python不是为了制作软件而生的,若想学习专门制作软件的知识,应该去学习其他专门的语言。以后可以从爬取的信息,用户界面的设计上很大程度的修改该程序。

参考
https://www.cnblogs.com/zhaof/p/6898138.html
https://blog.csdn.net/u014672511/article/details/80425808

  • 0
    点赞
  • 0
    评论
  • 4
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 1024 设计师:白松林 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值