之前看到旁边的妹子用着有道翻译pc版,突然灵机一动想自己写一个简单的翻译小程序。
思路是:
1、用bs4和requests写个简单的爬虫翻译。(main.py)
2、用tkinter实现一个简单的图形化界面。(GUI.py)
1、main.py:
这里选择的翻译网站是金山词霸,打开金山词霸,输入“have fun”测试发现url变为:
url后面为所输入的需要翻译的词语/短语,所以可以通过直接拼接url并访问得到想要的翻译。
对访问到的网页用bs4进行过滤得到想要得到的翻译信息。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| import requests from bs4 import BeautifulSoup def trans(word): url = "http://www.iciba.com/" html =requests.get(url+word).text soup = BeautifulSoup(html,'html.parser') trans_list = soup.find_all('li', class_='clearfix') if trans_list == []: return '无对应翻译,请检查拼写是否正确!' translation = '' for trans in trans_list: translation = translation + trans.text.replace('\n',' ').replace(' ','') + '\n' return translation
|
2、GUI.py:
之前在写AES加密解密程序的时候用到了easyGUI实现图形化界面,easyGUI真的很easy,但是功能也很简易。然后看了下发现tkinter可以实现事件(消息)循环,就学习了tkinter的使用方法,写了一个简单的图形化界面的实现:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| import tkinter import main window = tkinter.Tk() var = tkinter.StringVar() window.title('translator') window.geometry() l1 = tkinter.Label(window,text='请输入需要翻译的内容:') l1.grid(row=0) e1 = tkinter.Entry(window) e1.grid(row=0,column=1) def trans(): word = e1.get() translation = main.trans(word) var.set(translation) b = tkinter.Button(window,text="翻译",command=trans) b.grid(row=1,columnspan=2,sticky='W'+'E') l2 = tkinter.Label(window,textvar=var) l2.grid(columnspan=2) window.mainloop()
|
3、运行结果:
这个程序目前还有一些漏洞,比如翻译的是句子或者非词库中的词语的话无法得到翻译内容,等之后再来完善一下叭_(:3J∠)_