python爬虫小项目之有道翻译

孤人 提交于 2019-12-05 17:19:19

爬虫之翻译工具

近期期末考试来临,对于英语一直很差的我开始了紧张的复习着,在复 习的过程中不免会遇到不同的单词,这个时候就用到了翻译工具的帮助了。也正是在使用翻译网站时,突然想到自己在学习爬虫,为什么不可以写一个属于自己的翻译小工具呢,所以就有了这篇文章。

思路

首先我们需要一个有界面的图形窗口,然后用户通过输入需要翻译的词语,再点击翻译按钮后,会返回一个翻译的结果,

开发工具

requests模块
tkinter 模块
pyinstaller 模块

安装

直接 pip 安装即可

分析过程

  1. 首先访问有道在线翻译:http://fanyi.youdao.com/ ,F12 打开谷歌开发者测试工具,在翻译栏内随意输入需要翻译的词,如:帅哥
    在这里插入图片描述
  2. 在开发者工具栏中,点击Network,分析各条数据的 Response,可知图下的这条数据中有我们需要的结果。在这里插入图片描述
  3. 通过这条数据我们再去分析这个数据的请求,如下图:
    在这里插入图片描述
    从发起请求的请求头中,可知这个请求是post 请求,再往下查看请求的参数,如下图:在这里插入图片描述

通过分析 可知在构造请求时 ,请求头需 User-Agent 即可,而salttsvbsign 等参数可以不需要。也可知saltts 两参数为时间戳。而sign··、vb 两参数可在一个 js 文件中找出,如下图:

在这里插入图片描述

分析完成 ,话不多说直接上代码:

from tkinter import *
from tkinter import messagebox
import requests


# 爬去有道翻译 获取翻译结果
def translation():
    content = entry1.get()  # 获取用户输入的值
    if content == "":
        messagebox.showinfo('提示', '请输入要翻译的文字')
    else:
        url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
        header = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:64.0) Gecko/20100101 Firefox/64.0'
        }
        data = {
            'i': content,
            'from': 'AUTO',
            'to': 'AUTO',
            'smartresult': 'dict',
            'client': 'fanyideskweb',
            'doctype': 'json',
            'version': '2.1',
            'keyfrom': 'fanyi.web',
            'action': 'FY_BY_REALTIME',
            'typoResult': 'false'
        }
        resps = requests.post(url, data=data, headers=header)
        # print(resps)
        translation = resps.json()
        # print(translation)
        tgt = translation['translateResult'][0][0]['tgt']
        res.set(tgt)


root = Tk()  # 创建窗口

root.title("中英互译")  # 窗口标题

root.geometry('350x80+600+400')  # 窗口大小及窗口位置

# 标签控件  fg 字体颜色
one_label = Label(root, text="请输入要翻译的文字:", font=("微软雅黑,8"), fg='black')
one_label.grid()
tow_lable = Label(root, text="翻译之后的结果:", font=("微软雅黑,8"))
tow_lable.grid()

res = StringVar()  # 变量
# 输入控件
entry1 = Entry(root, font=("微软雅黑,15"))
entry1.grid(row=0, column=1)
# 翻译后结果
entry2 = Entry(root, font=("微软雅黑,15"), textvariable=res)
entry2.grid(row=1, column=1)

# 按钮控件  sticky 对齐方式 N W E S
button = Button(root, text="翻译", width=10, font=("微软雅黑,10"), command=translation)
button.grid(row=2, column=0, sticky=W)
button1 = Button(root, text="退出", width=10, font=("微软雅黑,10"), command=root.quit)
button1.grid(row=2, column=1, sticky=E)

root.mainloop()  # 显示窗口

打包

将文件打包成为一个可执行程序,运行如下命令:

pyinstaller -F -w (-i icofile) filename

filename表示你的Python程序文件名

-w 表示隐藏程序运行时的命令行窗口(不加-w会有黑色窗口)

括号内的为可选参数,-i path 表示给程序加上图标,图标必须为.ico格式

path 表示图标的位置,建议直接放在程序文件夹里面,这样子打包的时候直接写文件名就好

输入完成,按回车,就会开始自动打包了。然后我们进入到用户目录里面会再看到一个名称为dist目录,我们的翻译小工具(exe文件)就在里面

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!