简易单词翻译工具的制作
文章目录
- 简易翻译工具的制作
- 需要配置
- 快速下载:
- 关于chromedriver(重要)
- 代码区
- 库的引入
- 单词记录界面的构造
- 单词翻译界面的构造
- 主函数运行
简易翻译工具的制作
在阅读英语文章中遇到生词时,通常会诉诸于网络翻译,但若是想把单词记录下来,往往需要“手自笔录”与Excel,Word等地方,十分麻烦。在此提供一个程序,通过输入批量单词,生成对应的单词–翻译对应表,并可以选择将其导入至Excel文件。
需要配置
- Chrome浏览器
- chromedriver
- selenium库,wxPython库,Numpy库
快速下载:
命令行输入pip install -i https://pypi.tuna.tsinghua.edu.cn/simple 库名
关于chromedriver(重要)
- 下载Chromedriver
在页面http://chromedriver.storage.googleapis.com/index.html中选择您正在使用的Chrome浏览器版本,进入并选择“chromedriver_win32.zip”.(如果您的电脑是Linux或Mac则选择相应下载项)点击下载
p.s 如何查看浏览器版本:
点击Chrome右上角的竖排三点,帮助→关于Google Chrome. - 解压缩文件后,发现只有一个EXE文件:
chromedrover.exe,将该文件移到chrome.exe所在的文件夹:
- 添加路径
右键单击‘此电脑’选择“属性”
选择左上角的高级系统设置:

点击环境变量:

选择系统变量中的Path:
点击新建将Chrome所在文件夹路径加入其中(如下图最后一行所示)

4.一路点击确定即可
代码区
库的引入
from selenium import webdriver
import pandas as pd
import wx, os
import numpy as np
单词记录界面的构造
def RecordSurface():class RecordSurface(wx.Frame): #实现记录单词的GUI界面word_list = ""def __init__(self, parent=None, id=-1):super().__init__(parent, id=id, title='单词记录', size=(400, 300))self.Center()panel = wx.Panel(self)wx.StaticText(panel, label='输入新单词,一个单词一行', pos=(135, 10))self.text = wx.TextCtrl(panel,size=(100, 150),pos=(150, 30),style=wx.TE_MULTILINE)self.button_confirm = wx.Button(panel, label='确认', pos=(120, 190))self.button_cancel = wx.Button(panel, label='取消', pos=(210, 190))self.button_confirm.Bind(wx.EVT_BUTTON, self.OnclickSubmit)self.button_cancel.Bind(wx.EVT_BUTTON, self.OnclickCancel)def OnclickSubmit(self, event):#点击确认键则提交输入单词self.word_list = self.text.GetValue().splitlines()self.Close()def OnclickCancel(self, event): #点击取消则清空输入self.text.SetValue("")app = wx.App() #执行GUI界面运转(frame := RecordSurface()).Show()app.MainLoop() #结束GUI界面运转return frame.word_list #返回所记录的生词列表
单词翻译界面的构造
def Translator(word_list: list):option = webdriver.ChromeOptions()option.add_argument('headless')browser = webdriver.Chrome(chrome_options=option) browser.get('http://fanyi.youdao.com/')#前4行:以不显式打开Chrome页面的方式访问有道翻译browser.find_element_by_id('inputOriginal').send_keys('\n'.join(word_list)) #在有道翻译页面找到填写单词的HTML元素并向其中递交生词序列browser.find_element_by_id('transMachine').click() #点击页面中的翻译按钮df = pd.DataFrame({'单词': word_list, '释义': browser.find_element_by_id("transTarget").text.splitlines()}) #将生词和释义构成template = "%-15s%s\n"str_df = "单词".center(15) + "释义".center(10) + '\n'for e in list(np.array(df)):str_df += (e[0].center(15) + e[1].center(10) + '\n') #生成在GUI上展示的单词--释义对照表class Translator(wx.Frame): #单词翻译界面def __init__(self, parent=None, id=-1):super().__init__(parent, id=id,size=(400,300),title='翻译完成')panel = wx.Panel(self)self.Center()self.text = wx.TextCtrl(panel, size=(200, 150), pos=(90, 35),style=wx.TE_MULTILINE|wx.TE_READONLY)self.text.SetValue(str_df)wx.StaticText(panel, label='翻译完成,结果如下', pos=(140, 10))self.button_save = wx.Button(panel, label='导出Excel',pos=(110, 200)) self.button_exit = wx.Button(panel, label='完成', pos=(200, 200))self.button_save.Bind(wx.EVT_BUTTON, self.Save)self.button_exit.Bind(wx.EVT_BUTTON, self.Exit)def Save(self, event): #选择以xlsx的形式导出到本文件夹if not os.path.exists('word.xlsx'):df.to_excel('word.xlsx') #如果第一次使用,则新建文件else: pd.concat([pd.read_excel('word.xlsx', index_col=0), df], ignore_index=True).to_excel('word.xlsx') # 多次使用,则是在尾部添加内容wx.MessageBox('导出成功!文件名:"word.xlsx"')self.Close()wx.MessageBox('欢迎再次使用本系统!')def Exit(self, event):self.Close()wx.MessageBox('欢迎再次使用本系统!') #观察结果后直接退出app = wx.App()Translator().Show()app.MainLoop()
主函数运行
if __name__ == "__main__":Translator(RecordSurface()) #先运行单词记录界面,返回单词列表,然后翻译
然后就可以进行翻译操作啦!但是不足之处存在:未设计长句翻译功能,不容忍拼写错误(拼成另一个合法单词除外)等,如果有读者对此有类似需求的话,我会持续更新!
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
