如何使用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”属性语句,则会出现如下所示的浏览器窗口:
结果将出现在终端窗口中,如下所示:
注意:这是演示项目,所以支持的语言是有限的。您可以通过在声明中添加更多语言代码来增加语言支持。