前言
有时候需要把excel中的中文一个一个翻译成英文,当数量很多的时候,翻译会变的很麻烦,很浪费时间,这里用python写了一个可以全自动翻译的脚本
开始前需要下载一个谷歌浏览器(谷歌,火狐都行,这里讲的是谷歌)
一、库介绍
接下来我跟大家简单的介绍一下下面的三个库:
1.openpyxl 这里主要是用来读写excel文件的,把excel中的中文取出来翻译,然后存回去。
2.Selenium 是一个用于测试网站的自动化测试工具,支持各种浏览器包括Chrome、Firefox、Safari等主流界面浏览器,同时也支持phantomJS无界面浏览器。这里我们主要是用Selenium库中的webdriver模块,用来浏览器的一些操控。
3.time 这里只用到了sleep()函数。
二、使用步骤
1.引入库
import openpyxl as op
from selenium import webdriver
import time
导入之前要在pycharm里装好openpyxl和selenium库
这里在运行的时候可能会出错,原因是selenium版本高了,安装库的时候降低一下版本就好
2.读入数据
ex = op.load_workbook('C:\\Users\\Administrator\\Desktop\\country.xlsx') # 读取excel文件
Sheet = ex["Sheet1"] # 定位excel中的表单
这里是你需要读取excel文件的绝对路径。
data1=[] # 用来存放中文数据
data2=[] # 用来存放英文数据
x=1
y=1
for i in range(1,7): # 这里的range就是就是需要翻译中文的个数,写的比较死板,懒得写了,自己改吧QAQ
a1_cell = (Sheet.cell(row=x, column=1)).value
data1.append(a1_cell) # 取出每个cell小格里得到值存入data1
x+=1
# print(data1)
3.开始翻译
driver = webdriver.Chrome() # 打开Chrome浏览器
driver.get('https://fanyi.baidu.com/?aldtype=16047#auto/en') # 进入百度翻译
for i in range(0,6): # 同上,需翻译中文的个数,自个改QAQ
# 通过id定位到百度翻译的输入框,然后把data1中的中文赋值进去
driver.find_element_by_xpath('//*[@id="baidu_translate_input"]').send_keys(data1[i])
# 停住2秒
time.sleep(2)
# 这里是通过class定位到翻译后得到值
a = driver.find_element_by_class_name('output-bd').text
data2.append(a) # 存入data2
driver.find_element_by_xpath('//*[@id="baidu_translate_input"]').clear() # 清空输入框
# print(data2)
1.这里用sleep()的原因是,翻译的时候需要浏览响应时间,在翻译之前find_element_by_class_name(‘output-bd’).text 是不存在的,需要等js脚本执行完翻译才可检测到这个class值,可以根据需要自行调整。
2.这里在打开浏览器的时候可能会出现问题,原因是浏览器驱动版本和driver版本不一样,具体操作可以参考 这里。
下载完对应版本的驱动器之后直接放入python安装的文件夹(如果找不到,可以去环境变量里面找)
查看Chrome浏览器版本可能需要vpn,实在不行就下载这个(推荐上面那个)
Chrome驱动文件下载:点击下载chromedrive
4.存入excel
for i in range(0,6):
Sheet.cell(row = y, column = 2).value=data2[i] # 保存到想要保存到的区域
y+=1
ex.save('contry.xlsx') # 保存文件
接下来就可以开始了!
三、效果预览