python+Edge实现:excel提取内容,并自动翻译,把翻译结果写到指定表文件的位置

该篇文章描述了一个Python脚本,它利用Selenium库和有道翻译网站来自动化翻译Excel文件中的内容。脚本首先从1.xlsx读取数据,然后通过Edge浏览器无头模式访问翻译页面进行翻译,并将结果保存回2.xlsx。如果遇到翻译错误,则保留原文。整个过程涉及到了文件操作、网页自动化和异常处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、逻辑描述:

1.从EXCEL中拿出需要翻译的内容

2.判断拿出来的内容是否为空,如果是空的,不执行翻译函数。否则,提取新的表格内容

3.拿到表格内容

4.使用selenium.webdriver打开浏览器,并打开有道翻译

5.找到输入的地方,把表格内容传进去

6.等待1s

7.获取翻译结果。如果翻译报错,抛出异常返回原来的内容

8.把翻译结果写入下一列的相同行

9开始下一次循环

二、细节描述+代码

1.1.从EXCEL中拿出需要翻译的内容。(1.xlsx)存放的是需要翻译的数据。 

from selenium import  webdriver 
import time
from selenium.webdriver.common.keys import Keys
import logging
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

#从excel中获取需要翻译的内容
import openpyxl
wb = openpyxl.load_workbook('1.xlsx')#目标文件
type(wb)
sheet = wb.get_sheet_by_name('Sheet1')

2.设置翻译行数(下面代码的意思是从第1行翻译到第end行),end在运行后自行输入。

Start=1  #起始行
end=int(input('请输入需要翻译的行数!'))#末行
val=1    #间隔

3.翻译函数展示,这个函数的作用是拿到提取到表格后的内容打开浏览器翻译并得到翻译结果,翻译结果赋值给 result 参数

def fanyi():
    global result
    global result0
    global logger

    logger.info('翻译内容:'+str(data))
    #启动浏览器翻译网址
    options = EdgeOptions()
    options.add_argument(r"--headless")
    driver = webdriver.Edge(executable_path=r"MicrosoftWebDriver.exe", capabilities=options.to_capabilities())

    driver.get('https://fanyi.youdao.com/index.html#/') 
    #time.sleep(1)
        
    #定位输入的位置
    button = driver.find_element_by_id('js_fanyi_input')
    
    #输入需要翻译的内容
    button.send_keys(data)
    time.sleep(1)
   
    try:
        result = driver.find_element_by_class_name('resultOutput').text
    except:
        result = result  #出现翻译不了的,返回原始数据
    print(type(result))
    #print('翻译后的结果:'+str(result))
    logger.info('翻译结果:'+str(result))
    driver.close()

    logger.info('剩余 '+str((end-i))+' 条!')
    logger.info('计数器:'+str(i))
    

4.下面这段代码是把excel中拿出来的数据调用fanyi方法最后把翻译结果存到2.xslx,sheet页中的A列。

for i in range(Start, end,val):#1行1列,不包含中间那一行
    data=(i, sheet.cell(row=i, column=1).value)
    print('元组: '+str(data))    
    if(data==(i,None)):
        print('数据表为空!不执行!')
        logger.warning('第 '+str(i)+' 行数据表为空!不执行!:'+str(result))
    else:
        print('数据表不为空!开始执行')

        print('需要翻译的信息:'+str(data[1])) 
        data=data[1]
        if(data=='None'):
            print('this is Null!')
        else:
            fanyi()
            print('翻译结果:'+str(result))
            sheet['A'+str(i)]=result
            wb.save('2.xlsx')  #结果文件
            print('预期结果'+str(sheet['A'+str(i)]))
            print('------------第 '+str(i)+' 行写入成功!------------')           
            print('\n剩余 '+str((end-i))+' 条!')            
            print('\n标题翻译预计完成时间是 '+str(((end-i)*8)/60)+' 分钟后!请耐心等待!')
            print('计数器:'+str(i))

5.运行结果展示

运行前2.xlsx是这个样子

 运行后效果是这样的:

End,展示结束!感谢浏览!

如有不同的看法,请留言! 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值