Automatização de pesquisas no Google Tradutor: download de traduções com Selenium

Photo by Sergey Isakhanyan on Unsplash (Yerevan, Armenia. From top to bottom: “Rostov Don” market — 7m, Stepanakert — 332km, Dubai — 1951km)

Clique aqui para ler a versão em inglês deste artigo.

INTRODUÇÃO

Em um artigo anterior (link aqui), desenvolvi um programa que abre, de forma automática, o site do Google Tradutor e realiza a tradução de um determinado texto para outra língua. Contudo, o código então apresentado possuía uma limitação significativa, pois não havia funcionalidade para copiar o resultado da tradução, para que pudéssemos utilizar esses dados de alguma maneira posteriormente.

A adição de tal recurso será feita por nós com o auxílio da biblioteca Selenium, uma das melhores disponíveis para web scraping e testes automatizados. Antes de começarmos a analisar o nosso código, um aviso importante: para utilizar tal biblioteca, além do costumeiro pip install selenium, é necessário baixar o arquivo geckodriver para a sua máquina, arquivo que deve corresponder não apenas à mesma versão do seu navegador Chrome, como também ao sistema operacional utilizado pelo seu computador (Linux, Windows ou macOS). Para mais detalhes sobre esses procedimentos, favor consultar a documentação oficial:

https://selenium-python.readthedocs.io/installation.html

Outro detalhe importante, para os usuários de Windows: o arquivo chromedriver.exe (nome do geckodriver para Chrome/Windows) não deve ser executado por você. Ele deve ser apenas salvo na sua máquina, só isso. O meu, por exemplo, foi colocado no Desktop da partição de Windows 10 da minha máquina. Esse tipo de equívoco é relativamente comum, por isso faço questão de mencioná-lo aqui, inclusive por eu já ter sofrido com ele. Guarde o local onde você salvou esse arquivo, uma vez que você precisará, mais tarde, reproduzir o caminho absoluto para o geckodriver no seu próprio código.

Abaixo reproduzo a parte do programa que é comum ao que fizemos no artigo anterior, já com as importações extras de que necessitaremos. Destaque-se que a nossa antiga função open_google_trans() será chamada, a partir de agora, de search_google_trans(). Caso você já tenha lido esse meu outro artigo, sinta-se à vontade para pular a reprodução deste código e seguir adiante na leitura.

Agora iremos usar o Selenium para abrir a URL do Google Tradutor já formatada, que está salva na variável link. Para tanto, precisamos criar uma instância do browser do Chrome e chamar o método get dessa instância. Também pediremos que o programa pause por 15 segundos. As linhas abaixo fazem exatamente isso. Não se esqueça de trocar o valor do parâmetro executable_path pelo caminho absoluto onde o arquivo geckodriver está salvo na sua máquina.

O programa abrirá o site do Google Tradutor, já mostrando o texto original e a respectiva tradução para a língua escolhida.

Agora, basta apenas localizarmos na página o botão de “copiar tradução” e clicarmos nele com o Selenium, para que a tradução seja copiada para a área de transferência/clipboard (instale a seguinte biblioteca também: pip install pyperclip). Com isso, colaremos essa tradução em uma variável e, na sequência, faremos os procedimentos necessários para salvar o valor dessa variável em um outro arquivo .txt de saída. Todos esses passos são realizados pelo seguinte código:

Embora o meu código completo tenha rodado sem problemas nos testes que eu fiz aqui, é sempre uma boa ideia, quando estiver trabalhando com o Selenium, realizar algum tipo de tratamento de erro, os quais ocorrem com certa frequência ao se fazer um web scraping. Nesse caso, deixo para você, cara(o) leitor(a), o desafio de realizar essa melhoria, se assim achar necessário.

CRIAÇÃO DE DUAS FUNÇÕES AUXILIARES

É possível melhorar ainda mais o código da função search_google_trans, isolando algumas partes que poderiam constituir funções separadas. Aqui, dois trechos do código se destacam como potenciais candidatos para esse processo: a parte em que fazemos a checagem do tipo de input fornecido, por um lado; e o trecho em que são geradas as informações para o arquivo de output, com o seu salvamento na pasta respectiva, por outro.

Assim, criaremos as funções check_input_type e save_output_as_txt e, posteriormente, as chamaremos dentro da função search_google_trans. Além disso, a sequência dos parâmetros da função search_google_trans será alterada para facilitar a implementação de futuros recursos, bem como serão acrescentados alguns novos parâmetros que usaremos mais adiante. Tais mudanças no código são reproduzidas na sequência:

TRADUZINDO TEXTOS COM MAIS DE 5 MIL CARACTERES

Agora passaremos à implementação do trecho de código que permite automatizar a tradução de um texto .txt com mais de 5 mil caracteres, um recurso que poderá vir a ser bastante útil para algumas/alguns usuárias(os). Para tanto, precisamos criar uma sistemática para dividir os textos em unidades menores, chamando a função search_google_translate() para traduzir cada um desses pedaços (chunks). Dessa maneira, apresentamos abaixo a função translate_any_text:

Segue abaixo o link para o código completo desta versão de web scraping do Google Tradutor. E eu não sei quanto a vocês, mas eu passei um tempinho considerável olhando a tradução final para o japonês e o coreano, admirado com a beleza da escrita dessas línguas. Quem sabe um dia eu crie coragem para me aventurar no aprendizado delas. Quem sabe!

https://gist.github.com/fabricius1/fcf4e630938fd4d790a9bbacb75fb6f3

Meu muito obrigado a você, por ter prestigiado meu texto com a sua leitura.

Happy coding!

P.S.: Você encontrará mais informações sobre o meu trabalho no LinkedIn, Medium e Github:

https://www.linkedin.com/in/fabriciobrasil

https://fabriciusbr.medium.com/

https://github.com/fabricius1

MBA on Data Science and Analytics at Universidade de São Paulo — USP (in progress) | Data Analyst | Python and R Programmer | Power BI Consultant