Como fazer uma API de tradução do Google usando Python?
O Google Translate é um serviço de tradução multilíngue gratuito, baseado em tradução automática estatística e neural, desenvolvido pelo Google. É amplamente utilizado para traduzir sites ou páginas da web completos de um idioma para outro.
Estaremos criando um aplicativo de terminal Python que pegará o idioma de origem, o idioma de destino, uma frase para traduzir e retornar o texto traduzido. Implementaremos testes de unidade e técnicas de web scraping com selenium em python. O scrapping da Web é um conceito de captura dos dados necessários de um site. Selenium é uma biblioteca de nível industrial usada para web scraping e teste de unidade de vários softwares. Como pré-requisito, solicitaremos que as seguintes ferramentas sejam instaladas em nosso sistema.
- Python 3.x: uma versão de python 3.0 ou superior deve ser instalada.
- Biblioteca Selenium: uma biblioteca python necessária para descartar os sites. Copie a seguinte instrução para instalar o selenium em seu sistema.
Instalação: python3 -m pip install selenium - Webdriver: uma instância de um navegador da web exigido pelo selenium para abrir páginas da web. Baixe a versão mais recente do Chrome Webdriver no link abaixo e salve-o na mesma pasta em que está seu programa principal.
Link: https://chromedriver.chromium.org/downloads
Vamos dividir a seção de código em três partes:
- Configurando a ferramenta webdriver selenium e cromo.
- Obtendo entrada e testando para erros na entrada.
- Traduzir usando o Google Translate.
Parte 1: Definindo a ferramenta de selenium e as configurações do webdriver.
from
selenium
import
webdriver
from
selenium.webdriver.common.keys
import
Keys
from
selenium.common.exceptions
import
NoSuchElementException
from
selenium.common.exceptions
import
JavascriptException
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)
- Importando objeto webdriver para se conectar à instância do navegador Chrome.
- Importando a biblioteca de chaves para conectar os comandos básicos do teclado à instância do navegador.
- Importando manipuladores de exceção para a instância do navegador.
- Importe as opções do navegador e defina a propriedade '–headless' para executar a instância do navegador em segundo plano. Comente a instrução ”chrome_op.add_argument ('- headless')” para trazer o driver da web para os processos de primeiro plano.
Parte 2: Obtendo a entrada e testando na entrada.
def
takeInput():
languages
=
{
"English"
:
'en'
,
"French"
:
'fr'
,
"Spanish"
:
'es'
,
"German"
:
'de'
,
"Italian"
:
'it'
}
(
"Select a source and target language (enter codes)"
)
(
"Language"
,
" "
,
"Code"
)
for
x
in
languages:
(x,
" "
, languages[x])
(
"\n\nSource: "
, end
=
"")
src
=
input
()
sflag
=
0
for
x
in
languages:
if
(languages[x]
=
=
src
and
not
sflag):
sflag
=
1
break
if
(
not
sflag):
(
"Source code not from the list, Exiting...."
)
exit()
(
"Target: "
, end
=
"")
trg
=
input
()
tflag
=
0
for
x
in
languages:
if
(languages[x]
=
=
trg
and
not
tflag):
tflag
=
1
break
if
(
not
tflag):
(
"Target code not from the list, Exiting...."
)
exit()
if
(src
=
=
trg):
(
"Source and Target cannot be same, Exiting..."
)
exit()
(
"Enter the phrase: "
, end
=
"")
phrase
=
input
()
return
src, trg, phrase
Este é um código de demonstração para que o código dos idiomas seja limitado a {inglês, espanhol, alemão, italiano, francês}. Você pode adicionar mais idiomas e seus códigos posteriormente.
- Recebendo entrada para o código do idioma de origem e do idioma de destino.
- Verificar se os códigos inseridos são suportados ou não.
- O idioma de origem e o código do idioma de destino não devem ser iguais.
Parte 3: Traduzindo usando o Google Translate:
def
makeCall(url, script, default):
response
=
default
try
:
browser.get(url)
while
(response
=
=
default):
response
=
browser.execute_script(script)
except
JavascriptException:
(JavascriptException.args)
except
NoSuchElementException:
(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
)
- A função googleTranslate() recebe os três parâmetros, ou seja, código-fonte, código-alvo e frase. Ele gera a URL para o navegador solicitar.
- script contém uma instrução javascript que procura por um elemento HTML com class = “tlid-translation” e retorna seu conteúdo de texto.
- A função makeCall() faz uma solicitação com a URL criada, executa o script quando a página da Web está pronta e retorna o texto buscado.
Combinando as três partes acima.
if
__name__
=
=
"__main__"
:
src, trg, phrase
=
takeInput()
(
"\nResult: "
, googleTranslate(src, trg, phrase))
Cole todas as partes mostradas acima em um único arquivo .py e execute-o usando Python3.
Execução: python3 <filename.py>
Resultado:
Seção de entrada:
Se você comentou a declaração da propriedade '–headless', uma janela do navegador como a abaixo aparecerá:
O resultado aparecerá na janela do terminal como abaixo:
Nota: Este é um projeto de demonstração, portanto, os idiomas suportados são limitados. Você pode aumentar o suporte ao idioma adicionando mais códigos de idioma na declaração.
As postagens do blog Acervo Lima te ajudaram? Nos ajude a manter o blog no ar!
Faça uma doação para manter o blog funcionando.
70% das doações são no valor de R$ 5,00...
Diógenes Lima da Silva