0


python + selenium尝试百度翻译脚本

话不多说,直接上代码。

import re
import time
import xlrd #从excel中读取数据,支持xls、xlsx
import xlsxwriter #用来生成excel表格,插入数据、插入图标等表格操作,不支持读取

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.edge.options import Options

def openBaiduFanYi():
    # 无可视化界面设置 #
    edge_options = Options()
    # 使用无头模式
    edge_options.add_argument('--headless')
    # 禁用GPU,防止无头模式出现莫名的BUG
    edge_options.add_argument('--disable-gpu')
    # 指定msedgedriver位置和无头模式的配置
    # browser = webdriver.Edge("C:\Program Files (x86)\Microsoft\Edge\Application\msedgedriver.exe", options=edge_options)
    # 使用打开浏览器的方式
    browser = webdriver.Edge("C:\Program Files (x86)\Microsoft\Edge\Application\msedgedriver.exe")
    # 打开百度翻译网页
    browser.get("https://fanyi.baidu.com")
    return browser

# 翻译测试
def trans_test(text):
    browser = openBaiduFanYi()
    input_baidu = browser.find_elements(By.ID, "baidu_translate_input")
    input_baidu[0].clear()
    input_baidu[0].send_keys(text)
    time.sleep(2) # 等待2S后取回翻译结果
    res = browser.find_elements(By.XPATH, "//*[@class='ordinary-output target-output clearfix']")[0].text
    print(res)

# Excel翻译
def transExcel(fromFile, toFile):
    browser = openBaiduFanYi()
    workbook_from = xlrd.open_workbook(fromFile) # 打开需要翻译的Excel
    workbook_to = xlsxwriter.Workbook(toFile)  # 创建输出Excel
    # 遍历workbook_from的每个单元格,逐个翻译后写入到workbook_to
    for cursheet in workbook_from.sheets():
        worksheet = workbook_to.add_worksheet(cursheet.name)
        for rownum in range(cursheet.nrows):
            for colnum in range(cursheet.ncols):
                res = cursheet.cell(rownum, colnum).value
                cellvalue = str(res)
                # 音译汉时,排除空单元格和非英文单元格
                if cellvalue.strip() != "" and re.match('.*[a-z]+.*', cellvalue):
                    input_baidu = browser.find_elements(By.ID, "baidu_translate_input")
                    input_baidu[0].clear()
                    input_baidu[0].send_keys(cellvalue)
                    time.sleep(2)
                    res = browser.find_elements(By.XPATH, "//*[@class='ordinary-output target-output clearfix']")[0].text
                worksheet.write(rownum, colnum, res)
    browser.close()
    workbook_to.close()

trans_test("好人一生平安")
# xlrd包高版本不支持读取xlsx,此处使用的时1.2.0版本
# transExcel("C:\TEST.XLS","C:\翻译TEST.XLS")

存在的问题:

  1. 翻译速度较慢,把time.sleep值改小后,会存在翻译值仍是原值的问题

  2. 一定,一定,一定要下载和本地浏览器相同版本的webdriver

  3. 不知道下载来的webdirver.exe应该放在何处,采用直接路径调用的方式

  4. 使用sendkey时,百度翻译自动探测方向,暂时没有限定翻译方向的办法

  5. Excel里面的内容太多,可能会卡死。尴尬

  6. 输入框baidu_translate_input和输出内容ordinary-output target-output clearfix均是在翻译网页中取得。如果后期网页元素变化,需要修正

  7. 。。。。。

结论:

  1. 嗯,实现了复制粘贴。捂脸

  2. selenium确实是网页自动化的一个好工具,用来做复制粘贴挺好。

其实百度下python翻译脚本,网上也有好多解析youdao, baidu等翻译接口来做的,大部分是几年的,有的能用,但无法批量翻译。调用翻译API普遍存在的问题是需要动态cookie,或特殊的sign验证,研究了一下百度翻译API,奈何对cookie了解有限(完全不会),最后作罢。

标签: python selenium excel

本文转载自: https://blog.csdn.net/xieshouwen/article/details/128947101
版权归原作者 xieshouwen 所有, 如有侵权,请联系我们删除。

“python + selenium尝试百度翻译脚本”的评论:

还没有评论