Python脚本调用谷歌浏览器的谷歌翻译

Python脚本调用谷歌浏览器的谷歌翻译

  • 前言
  • 一、使用方法
    • 1.下载驱动
    • 2.配置启动方式
    • 3.翻译方式
  • 二、硬核代码
  • 三、注意事项

前言

相继做完有道翻译,百度API翻译,代理IP池翻译翻译后,各接口对比如下:有道翻译相对没那么准确,并且访问次数多了会被限制IP,谷歌翻译接口也同样如此。 百度API翻译在标准版中访问频率被限制在每秒1次,但不会限制字符数,如果使用高级版或者企业版则会相应提升访问频率,但会限制字符数,200万内免费,超出部分按照49元/百万字符收费。

一、使用方法

如果浏览器是安装在C盘,那要继续按步骤走下去应该需要管理员权限,否则就需要使用绿色版的谷歌浏览器了,因为将驱动放到安装目录可能需要管理员权限。

1.下载驱动

1、首先查看自己浏览器的版本,在设置 > 关于Chrome可以看到我的版本是97.0.4692.71
Python脚本调用谷歌浏览器的谷歌翻译_第1张图片

然后去: http://chromedriver.storage.googleapis.com/index.html.下载对应自己谷歌版本的驱动,比如我是下载97.0.4692.71版本
Python脚本调用谷歌浏览器的谷歌翻译_第2张图片

下载后解压出来,将chromedriver.exe放到谷歌浏览器安装目录。比如:
Python脚本调用谷歌浏览器的谷歌翻译_第3张图片

2.配置启动方式

需要在这两个代码中选择一条运行,另一条注释。

### 自己手动指定驱动位置
browser = webdriver.Chrome(r'C:\Program Files\Google\Chrome\Application\chromedriver.exe')
### 添加环境变量,自动选择驱动
# browser = webdriver.Chrome(chrome_options=chrome_options)

区别在于:
第一条要自己去修改驱动的路径,并且在代码运行过程中可以看到浏览器工作状态,查看翻译过程。
第二条需要添加环境变量,并且电脑需要管理员权限,在代码运行过程中会隐藏浏览器工作界面。

3.翻译方式

翻译方式是直接由浏览器网址决定,如我的这个网址的方式是自动识别语种,翻译为中文

base_url = 'https://translate.google.cn/?sl=auto&tl=zh-CN&op=translate'

修改方法:
Python脚本调用谷歌浏览器的谷歌翻译_第4张图片

二、硬核代码

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from retry import retry
import time

chrome_options = Options()
# 可以选择是否需要隐藏浏览器界面
chrome_options.add_argument('--headless')
###人为选择,直接指定驱动位置,可以看到浏览器工作状态,不需要添加环境变量
browser = webdriver.Chrome(r'C:\Program Files\Google\Chrome\Application\chromedriver.exe')
### 人为选择,隐藏浏览器工作状态,不过需要添加环境变量
# 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 translate(input):
    browser.find_element_by_css_selector("textarea[aria-label='原文']").clear()   #清空输入框内的提示信息,如果直接输入内容,可能会与输入框的默认提示信息拼接,从而造成输入信息的错误,这是clear()将会变得非常有用
    browser.find_element_by_css_selector("textarea[aria-label='原文']").send_keys(input) #用于在一个输入框内输入内容
   
    time.sleep(0.5)
    
    result = 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[6]/div/div[1]/span[1]').text
    return result

if __name__ == '__main__':
    count = 0
    for i in range(100):
        print(str(count) + translate('It is time to sleep\nwhat are you doing now'))
        print(str(count) + translate('Let is test again\nyes i am'))
        count+=1
    browser.quit()

三、注意事项

借助谷歌浏览器翻译的速度不是很快,速度受限于网络速度,代码的运行方式也很简单,只是填入文本后延时一段时间,然后再去获取翻译结果。如果延时时间不够长的话获取到的结果可能是上次的翻译结果。

你可能感兴趣的:(Python脚本,python,chrome,在线翻译)