📜  如何使用Python制作谷歌翻译 API?

📅  最后修改于: 2022-05-13 01:55:50.064000             🧑  作者: Mango

如何使用Python制作谷歌翻译 API?

Google Translate 是一种免费的多语言翻译服务,基于统计和神经机器翻译,由 Google 开发。它广泛用于将完整的网站或网页从一种语言翻译成另一种语言。

我们将创建一个Python终端应用程序,它将采用源语言、目标语言、一个短语来翻译并返回翻译后的文本。我们将在Python中使用selenium实现单元测试和网络抓取技术。 Web 抓取是从网站捕获所需数据的概念。 Selenium是一个工业级库,用于对各种软件进行网络抓取和单元测试。作为先决条件,我们将需要在我们的系统中安装以下工具。

  • Python 3.x:需要安装Python 3.0 或以上版本。
  • Selenium库:报废网站所需的Python库。复制以下语句以在您的系统上安装selenium 。
    安装:python3 -m pip install selenium
  • Webdriver: selenium打开网页所需的 Web 浏览器实例。从下面的链接下载最新版本的 Chrome Webdriver,并将其保存在您的主程序所在的同一文件夹中。
    链接:https://chromedriver.chromium.org/downloads

我们将代码部分分为三个部分:

  • 设置selenium和 chrome webdriver 工具。
  • 接受输入并测试输入中的错误。
  • 使用谷歌翻译进行翻译。

第 1 部分:设置selenium工具和 webdriver 设置。

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.common.exceptions import NoSuchElementException
from selenium.common.exceptions import JavascriptException
  
# local variables
from selenium.webdriver.chrome.options import Options as ChromeOptions
chrome_op = ChromeOptions()
chrome_op.add_argument('--headless')
browser = webdriver.Chrome(executable_path ='chromedriver', options = chrome_op)
  • 导入 webdriver 对象以连接到 chrome 浏览器实例。
  • 导入键库以将基本键盘命令连接到浏览器实例。
  • 为浏览器实例导入异常处理程序。
  • 导入浏览器选项并设置“-headless”属性以在后台运行浏览器实例。注释“chrome_op.add_argument('–headless')”语句以将 webdriver 带到前台进程。

第 2 部分:接受输入并测试输入。

def takeInput():
    languages = {"English": 'en', "French": 'fr',
                 "Spanish": 'es', "German": 'de', "Italian": 'it'}
  
    print("Select a source and target language (enter codes)")
    print("Language", "   ", "Code")
  
    for x in languages:
        print(x, "   ", languages[x])
  
    print("\n\nSource: ", end ="")
    src = input()
    sflag = 0
  
    for x in languages:
        if(languages[x] == src and not sflag):
            sflag = 1
            break
    if(not sflag):
        print("Source code not from the list, Exiting....")
        exit()
  
    print("Target: ", end ="")
    trg = input()
    tflag = 0
  
    for x in languages:
        if(languages[x] == trg and not tflag):
            tflag = 1
            break
  
    if(not tflag):
        print("Target code not from the list, Exiting....")
        exit()
  
    if(src == trg):
        print("Source and Target cannot be same, Exiting...")
        exit()
  
    print("Enter the phrase: ", end ="")
    phrase = input()
  
    return src, trg, phrase

这是一个演示代码,因此语言代码仅限于{英语、西班牙语、德语、意大利语、法语}。您可以稍后添加更多语言及其代码。

  • 输入源语言和目标语言代码。
  • 检查输入的代码是否支持。
  • 源语言和目标语言代码不应相同。

第 3 部分:使用谷歌翻译进行翻译:

def makeCall(url, script, default):
    response = default
    try:
        browser.get(url)
        while(response == default):
            response = browser.execute_script(script)
  
    except JavascriptException:
        print(JavascriptException.args)
  
    except NoSuchElementException:
        print(NoSuchElementException.args)
  
    if(response != default):
        return response
    else:
        return 'Not Available'
  
  
def googleTranslate(src, trg, phrase):
    url = 'https://translate.google.co.in/# view = home&op = translate&sl =' + \
        src + '&tl =' + trg+'&text ='+phrase
    script = 'return document.getElementsByClassName("tlid-translation")[0].textContent'
    return makeCall(url, script, None)
  • googleTranslate()函数接收三个参数,即源代码、目标代码和短语。它为浏览器生成请求的 URL。
  • 脚本包含一个 javascript 语句,它搜索带有 class = “tlid-translation” 的 HTML 元素并返回它的文本内容。
  • makeCall()函数使用创建的 URL 发出请求,在网页准备好时执行脚本并返回获取的文本。

综合以上三部分。

if __name__ == "__main__":
    src, trg, phrase = takeInput()
    print("\nResult: ", googleTranslate(src, trg, phrase))

将上面显示的所有部分粘贴到一个 .py 文件中,然后使用 Python3 执行它。

执行:python3

输出:

输入部分:

如果您已经注释了“–headless”属性语句,则会出现如下所示的浏览器窗口:

结果将出现在终端窗口中,如下所示:

注意:这是演示项目,所以支持的语言是有限的。您可以通过在声明中添加更多语言代码来增加语言支持。