traducir - google translator python
Script de Python para traducir a través de traductor de Google (3)
Intento aprender Python, así que decidí escribir un script que pudiera traducir algo usando Google translate. Hasta ahora, escribí esto:
import sys
from BeautifulSoup import BeautifulSoup
import urllib2
import urllib
data = {''sl'':''en'',''tl'':''it'',''text'':''word''}
request = urllib2.Request(''http://www.translate.google.com'', urllib.urlencode(data))
request.add_header(''User-Agent'', ''Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11'')
opener = urllib2.build_opener()
feeddata = opener.open(request).read()
#print feeddata
soup = BeautifulSoup(feeddata)
print soup.find(''span'', id="result_box")
print request.get_method()
Y ahora estoy atascado. No puedo ver ningún error, pero todavía no funciona (con eso quiero decir que se ejecutará el script, pero no traducirá la palabra).
¿Alguien sabe cómo arreglarlo? (Disculpa mi pobre ingles)
Google translate está destinado a ser utilizado con una solicitud GET
y no una solicitud POST
. Sin embargo, urrllib2
enviará automáticamente una POST
si agrega datos a su solicitud.
La solución es construir la url con una cadena de consulta para que envíe un GET
.
Deberá modificar la línea request = urllib2.Request(''http://www.translate.google.com'', urllib.urlencode(data))
de su código.
Aquí va:
querystring = urllib.urlencode(data)
request = urllib2.Request(''http://www.translate.google.com'' + ''?'' + querystring )
Y obtendrá la siguiente salida:
<span id="result_box" class="short_text">
<span title="word" onmouseover="this.style.backgroundColor=''#ebeff9''" onmouseout="this.style.backgroundColor=''#fff''">
parola
</span>
</span>
Por cierto, estás quebrando los términos de servicio de Google; mírelos si está haciendo algo más que piratear un pequeño guión para entrenar.
Usando requests
Le recomiendo encarecidamente que se mantenga alejado de urllib si es posible, y utilice la excelente biblioteca de requests
, que le permitirá utilizar HTTP
eficiente con Python.
Hice este script si desea verificarlo: https://github.com/mouuff/Google-Translate-API:)
Sí, su documentación no es tan fácil de descubrir.
Esto es lo que haces:
En la consola de Google Cloud Platform :
1.1 Vaya a la página de Proyectos y seleccione o cree un nuevo proyecto
1.2 Habilitar la facturación de su proyecto
1.3 Habilite la API de traducción de la nube
1.4 Cree una nueva clave de API en su proyecto , asegúrese de restringir el uso por IP u otros medios disponibles allí.
- En la máquina donde quieres ejecutar el cliente :
instalación de pip --upgrade google-api-python-client
- Luego puede escribir esto para enviar solicitudes de traducción y recibir respuestas:
Aquí está el código :
import json
from apiclient.discovery import build
query=''this is a test to translate english to spanish''
target_language = ''es''
service = build(''translate'',''v2'',developerKey=''INSERT_YOUR_APP_API_KEY_HERE'')
collection = service.translations()
request = collection.list(q=query, target=target_language)
response = request.execute()
response_json = json.dumps(response)
ascii_translation = ((response[''translations''][0])[''translatedText'']).encode(''utf-8'').decode(''ascii'', ''ignore'')
utf_translation = ((response[''translations''][0])[''translatedText'']).encode(''utf-8'')
print response
print ascii_translation
print utf_translation