前言:

这两个Python脚本是我在实习期间完成的,具体来自于小组主管的两个小需求。做完之后感觉还是挺有收获的。

实现谷歌翻译,首先需要将我们写的Python脚本还有需要翻译的文件放到谷歌浏览器的安装目录下。

值得注意的是,实现谷歌翻译需要调用谷歌浏览器驱动chromedriver.exe,如果没有则需要去下载并将其放入谷歌浏览器的安装目录下。致于如何下载对应浏览器版本的驱动可以百度参考一下!

以下分别两个说明,指明了使用方法。

翻译pdf-txt-word的实现:

说明1

本爬虫主要实现如下功能:
       首先将pdf文件转换为txt文件,然后从txt文件中读取每一行进行爬虫翻译。翻译完后将每行的原文与翻译结果写入word(.doxc)文件中,翻译结束保存并退出。

使用方法及注意事项

  1. 首先,将需要翻译的pdf文件放入translate_pdf_to_text_to_word.exe 相同的路径下。
  2. 双击translate_pdf_to_text_to_word.exe 开始运行。
  3. 等待片刻,会在命令窗口提示如下信息:“请确认是否开始将pdf文件转化txt文件!(确认请按 1 ;直接开始翻译请按 2 ;退出请按 3)”
  4. 如果没有txt文件的话,需要先按下 1 生成txt文件。值得注意的是:一般生成的txt文件中一句话会被分成几段,这就需要我们手动打开txt文件对其段落格式进行调整。
  5. 按完 1 后,会提示如下信息:“请确认是否开始翻译(--2--开始/--3--结束)”
  6. 按下 y 后就开始进行爬虫(谷歌)翻译了;按下 3 后就结束本程序。

主要实现流程如下:

import sys
import pdfplumber
import os
import glob
import codecs
import docx
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from retry import retry
import time
import pynput.keyboard as pkos.chdir('./')chrome_options = Options()
# 可以选择是否需要隐藏浏览器界面
chrome_options.add_argument('--headless')
# 当前文件所在路径
path_c = os.getcwd()
# 拼接当前谷歌浏览器路径
path = path_c + '\Chrome\chromedriver.exe'
# 人为选择,默认直接指定驱动位置,可以看到浏览器工作状态,不需要添加环境变量
browser = webdriver.Chrome(path)
# 人为选择,隐藏浏览器工作状态,不过需要添加环境变量
# browser = webdriver.Chrome(chrome_options=chrome_options)
base_url = 'https://translate.google.cn/?sl=auto&tl=zh-CN&op=translate'
browser.get(base_url)@retry(tries=3, delay=1)
def Google_translate(origin_contents):if origin_contents == '':return ''else:try:browser.find_element_by_css_selector("textarea[aria-label='原文']").clear()  # 清空输入框内的提示信息,如果直接输入内容,可能会与输入框的默认提示信息拼接,从而造成输入信息的错误browser.find_element_by_css_selector("textarea[aria-label='原文']").send_keys(origin_contents)  # 用于在一个输入框内输入内容time.sleep(2)  # 此处需根据网络情况来进行延时,因为填入文段需要一定时间才能获取到网络的翻译结果dst_text = browser.find_element_by_xpath('//*[@id="yDmH0d"]/c-wiz/div/div[2]/c-wiz/div[2]/c-wiz/div[1]/div[2]/div[3]/c-wiz[2]/div[7]/div/div[''1]/span[1]').textexcept:print('原文可能有误,默认返回原文')return origin_contentsreturn dst_text# pdf文件转为txt文件
def pdf_txt():for file in glob.glob(r'*.pdf'):print(file)pdf = pdfplumber.open(file)page_count = len(pdf.pages)f = codecs.open(os.path.basename(file)[:-4] + '.txt', 'w', 'utf-8')  # 若文件不存在,系统自动创建。'a'表示可连续写入到文件,保留原内容,在原# 内容之后写入。可修改该模式('w+','w','wb'等)print(page_count)  # 得到页数for page in pdf.pages:print('---------- 第[%d]页 ----------' % page.page_number)f.write('---------- 第[' + str(page.page_number) + ']页 ----------' + '\n')# 获取当前页面的全部文本信息,包括表格中的文字print(page.extract_text())translate = page.extract_text()f.write(translate)  # 将字符串写入文件中f.close()  # 关闭# 将生成的txt文件内容进行翻译
def txt_translate():for filename in glob.glob(r'*.txt'):print(filename)with codecs.open(filename, 'r', 'utf-8') as f:file = docx.Document()  # 创建内存中的word文档对象data = f.readlines()for index in data:write_origin = index.replace("\n", "")print(write_origin)Results = Google_translate(write_origin)  # 谷歌翻译print(Results)file.add_paragraph(index + Results)  # 写入若干段落f.close()  # 关闭file.save(os.path.basename(filename)[:-4] + '_Translate.docx')print('Translate complete!!!\n')# os.system('pause')sys.exit()# 键盘监听事件y
print("\n\n\n")
print("请确认是否开始将pdf文件转化txt文件!(确认请按 1 ;直接开始翻译请按 2 ;退出请按 3)")def on_press(key):# 监听按键key = str(key)[1]if key == "1":print("\n\n\n")print("按键为", key)print("开始将pdf文件转化为txt文件!!!")pdf_txt()print("已生成txt文件!!!")print("请确认是否开始翻译(--2--开始/--3--结束)")print("为确保翻译准确,请打开生成的txt文件,调整段落,再进行翻译!")elif key == "2":print("\n\n\n")print("按键为", key)print("开始翻译!!!")print("请耐心等待!!!")txt_translate()elif key == "3":print("\n\n\n")print("按键为", key)print("取消翻译!!!")sys.exit(0)else:print("按键为", key)# 连接事件以及释放
with pk.Listener(on_press=on_press) as pklistener:pklistener.join()time.sleep(3)

翻译Excel的实现:

说明2

本爬虫主要实现如下功能:
       本爬虫实现对excel文件单元格内容进行翻译,可以对excel文件直接进行翻译,也可以将pdf文件中的表格转化为excel,再进行翻译。支持excel文档打开翻译,支持xlsxxlsm等格式的excel文件。

使用方法及注意事项

  1. 首先,将需要翻译的pdf文件或者excel文件放入pdf_to_excel.exe和translate_for_excel.exe相同的路径下。
  2. 双击pdf_to_excel.exe 可以对路径下的pdf进行转换,转换为excel,会生成ans.xlsx文件。
  3. 双击translate_for_excel.exe实现对ans.xlsx文件其他需要翻译的excel文件进行翻译。
  4. 双击translate_for_excel.exe后,控制台输出“请输入需要翻译的表格(Sheet):”,输入需要翻译的Sheet。之后控制台会输出“请输入需要翻译的文本范围,数字之间用空格分隔开:”,输入需要翻译的范围,注意这里要输入四个数字来确定单元格的范围,四个数字分别代表“第几行 第几列 第几行 第几列”。
  5. 之后控制台会输出“请输入翻译后的存放范围,数字之间用空格分隔开:”,注意这里要输入四个数字来确定要存放翻译内容单元格的范围。
  6. 注意:当谷歌翻译窗口一直显示在加载,但实际上已经加载完了,这需要点击窗口的×取消加载。然后直接在控制台输入需要翻译的sheet,以及范围。
from openpyxl import load_workbook
import xlwings as xw
import os
import sys
import glob
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from retry import retry
import timeos.chdir('./')# 从指定文件路径读取excel文件和Sheet表格
chrome_options = Options()
# 可以选择是否需要隐藏浏览器界面
chrome_options.add_argument('--ignore-certificate-errors')
# 当前文件所在路径
path_c = os.getcwd()
# 拼接当前谷歌浏览器路径
path = path_c + '\Chrome\chromedriver.exe'
# 人为选择,直接指定驱动位置,可以看到浏览器工作状态,不需要添加环境变量
browser = webdriver.Chrome(path)
base_url = 'https://translate.google.cn/?sl=auto&tl=zh-CN&op=translate'
browser.get(base_url)# @retry(tries=3, delay=1)
def Google_translate(origin_contents):dst_contents = []for index in origin_contents:if index == "":dst_contents.append("")else:print(index)browser.find_element_by_css_selector("textarea[aria-label='原文']").clear()browser.find_element_by_css_selector("textarea[aria-label='原文']").send_keys(index)  # 用于在一个输入框内输入内容time.sleep(3)  # 此处需根据网络情况来进行延时,因为填入文段需要一定时间才能获取到网络的翻译结果dst_text = browser.find_element_by_xpath('//*[@id="yDmH0d"]/c-wiz/div/div[2]/c-wiz/div[2]/c-wiz/div[1]/div[2]/div[3]/c-wiz[2]/div[7]/div/div[''1]/span[1]').textprint(dst_text)dst_contents.append(dst_text)return dst_contentsdef Get_path():for file in glob.glob(r'*.xlsx') or glob.glob(r'*.xlsm'):load_workbook(file)print(file)return file  # 应为Sheet的原因,一次只能翻译一个文件def Get_table():return input("请输入需要翻译的表格(Sheet):\n\n")origin_list = []
dest_list = []def Get_contents(file_path, sheet_index, x_start, y_start, x_end, y_end):contents = []try:wb = load_workbook(file_path)except:print("错误:打开文件失败,请检查文件路径是否有误!!!\n\n")sys.exit()try:sheet = wb.get_sheet_by_name(sheet_index)except:print("错误:打开sheet表格失败,请检查表名是否有误!!!\n\n")sys.exit()for i in range(x_start, x_end + 1):for j in range(y_start, y_end + 1):try:if sheet.cell(i, j).value is None:contents.append("")else:old = sheet.cell(i, j).valuecontents.append(old)except Exception as e:print('写入时发生错误:' + e)print(len(contents))return contentsdef Write_contents(path_t, sheet_num, ocontents, contents, x_start, y_start, x_end, y_end):index = 0workbook = xw.Book(path_t)sheet = workbook.sheets(sheet_num)for i in range(x_start, x_end + 1):for j in range(y_start, y_end + 1):if (origin_start_row == dest_start_row) and (origin_start_col == dest_start_col):sheet.cells(i, j).value = str(ocontents[index]) + '\n' + str(contents[index])  # 后面追加else:sheet.cells(i, j).value = str(contents[index])index += 1workbook.save(path_t)print('写入成功')if __name__ == '__main__':path_t = Get_path()table = Get_table()print("如果文本范围相同,则会在原来的文本后添加\n\n")origin_start_row, origin_start_col, origin_end_row, origin_end_col = \map(int, input("请输入需要翻译的文本范围,数字之间用空格分隔开:\n\n").split(" "))dest_start_row, dest_start_col, dest_end_row, dest_end_col = \map(int, input("请输入翻译后的存放范围,数字之间用空格分隔开:\n\n").split(" "))# 从1开始origin_list = Get_contents(path_t, table, origin_start_row, origin_start_col, origin_end_row, origin_end_col)print(origin_list)# 谷歌翻译dest_list = Google_translate(origin_list)# 从1开始,第几行第几列Write_contents(path_t, table, origin_list, dest_list, dest_start_row, dest_start_col, dest_end_row, dest_end_col)
print('Translate complete!!!')
browser.close()

希望以上面内容能给大家带来帮助,如果有用请点赞支持!!!感谢!!!

转载请联系!

Python实现谷歌翻译爬虫,翻译PDF,翻译Excel,支持excel文档打开翻译,支持xlsx,xlsm等格式。相关推荐

  1. html文档生成pdf离线文件,将Swagger2文档导出为HTML或markdown等格式离线阅读解析.pdf...

    将将Swagger2文文档档导导出出为为HTML或或markdown等等格格式式离离线线阅阅读读解解析析 网上有很多 <使用swagger2构建A PI文档>的文章,该文档 一个在线文档, ...

  2. 文档怎么翻译?文档翻译工具有哪些?

    在撰写毕业论文的时候,老师找了一些论文让我们进行阅读和学习.由于有些是外国论文,所以其中包含的一些专业词汇和语句我就实在是不太明白,那么为了完成毕业论文的撰写,我就上网搜索了一些文档翻译的方法,以此来 ...

  3. 文档在线翻译的方法介绍

    文档怎么进行在线翻译的?我们有的时候需要将文档在线翻译,下面小编就简单给大家介绍一下将文档在线翻译的方法.辅助工具:一点翻译 步骤一:我们可以直接进入到一点翻译网站的首页,在这之前我们需要在浏览器上进 ...

  4. html怎么转换到百度,类似百度文库在线预览文档flash版(支持word、excel、ppt、pdf)+在线预览文档html版...

    类似百度文库在线预览文档flash版(支持word.excel.ppt.pdf)+在线预览文档html版 (1).将文档转换为html,只支持支持office文档 (2).将文档转换为flash,实现 ...

  5. 用 Python 写的文档批量翻译工具,效果竟然超越付费软件?

    大家好,我是启航. 本文将给大家分享一个实用的Python办公自动化脚本 「利用Python批量翻译英文Word文档并保留格式」,最终效果甚至比部分收费的软件还要好!先来看看具体的工作内容. 一.需求 ...

  6. 如何将PDF文档进行翻译?PDF文档翻译简单方法介绍

    如今PDF格式的文档运用的十分广泛,有时候由于工作的需要,要求我们将一篇PDF中文文档翻译成英文,这简直是让人崩溃啊,更何况是PDF格式的文件又不像word一样可以直接复制粘贴进浏览器中翻译,所以很多 ...

  7. 如何将英文pdf文档在线翻译成中文?

    我们都要掌握一些办公技巧,像pdf翻译就是必不可少的,如何将英文pdf文档在线翻译成中文的,这个对英语差的来说简直就是福利,接着我就来发放一波福利. 1.打开浏览器输入迅捷在线PDF转换器,并在搜索结 ...

  8. 怎样将PDF文档进行翻译?PDF文档翻译简单方法介绍

    如今PDF格式的文档运用的十分广泛,有时候由于工作的需要,要求我们将一篇PDF中文文档翻译成英文,这简直是让人崩溃啊,更何况是PDF格式的文件又不像word一样可以直接复制粘贴进浏览器中翻译,所以很多 ...

  9. PDF文档在线翻译怎么操作

    PDF文档在线翻译怎么操作?在我们日常的学习和工作中,我们会经常阅读一些资料和文献.现在许多文档以PDF格式存在.如果是外文的PDF文档,内容就很难看懂,尤其是外文不太好的朋友.一些翻译软件面对PDF ...

最新文章

  1. linux 启动rabbitmq 报错:
  2. 2019厦门科技中学计算机特长,中考快讯 | 2019厦门市高中特长生招生学校名单出炉!...
  3. Java实现替换多个字符串中的参数
  4. 一道十分有趣的概率题!3局2胜和5局3胜哪个胜算更大?你怎么思考
  5. Linux 编译 mysql
  6. IIS/ASP.NET 管道
  7. 计算机组成原理实验串行口,计算机组成原理实验2.ppt
  8. python界面设计模块_Python+Pycharm+PyQT5可视化程序设计入门
  9. vue放大缩小div_vue 放大缩小 svg 图形(原理类似整个列表更新)
  10. 提高数据库的查询速率及其sql语句的优化问题
  11. javascript动画系列第二篇——磁性吸附
  12. Go语言学习笔记(8)——包和结构体
  13. netlink 0001 --- 基础简介
  14. 贝莱德COO:作为全球最大资产管理公司,为什么说我们还是成长中的科技公司?
  15. 易之风门诊收费系统 v1.0 官方
  16. Axure RP 7.0初学篇01-------安装
  17. PHP简单实现个人网站
  18. body英语什么意思是什么_body是什么意思中文翻译
  19. docker 清理磁盘
  20. Games101学习笔记(一)

热门文章

  1. Python【超强学习网站】
  2. LED点阵屏二次开发资料收集
  3. Failed to get local InetAddress for VMID. This is unlikely to matter.
  4. 【免root】旧安卓手机本地运行青龙面板[termux高级终端]
  5. 毕业设计 深度学习乳腺癌分类
  6. 记一次ORA-24247: network access denied by access control list (ACL)
  7. 区块链实战:发行自己的第一款NFT(Non-Fungible Token)数字藏品
  8. 腾讯云大数据:神盾首创非对称联邦学习,深度保障数据隐私
  9. 2020蓝桥杯省赛填空题【卡片】
  10. LeetCode in Python-14. Longest Common Prefix 最长公共前缀