Python script para traducir a través de Google Translate

Estoy tratando de 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 en él, pero aún no funciona (me refiero a que el script se ejecutará, 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 con una solicitud POST . Sin embargo, urrllib2 enviará automáticamente un POST si agrega datos a su solicitud.

La solución es construir la url con una cadena de consulta para que esté enviando un GET .
Deberá modificar la línea de 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ás la siguiente salida:

   parola   

Por cierto, estás rompiendo un poco los términos de servicio de Google; Míralos si estás haciendo más que hackear un pequeño script para entrenar.

Usando requests

Le recomiendo que se mantenga alejado de urllib si es posible, y use la excelente biblioteca de requests , que le permitirá usar HTTP con Python de manera eficiente.

Hice este script si desea comprobarlo: https://github.com/mouuff/Google-Translate-API🙂

Sí, su documentación no es tan fácil de descubrir.

Esto es lo que haces:

  1. 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 para su proyecto

    1.3 Habilitar la API de traducción en la nube

    1.4 Cree una nueva clave API en su proyecto , asegúrese de restringir el uso por IP u otros medios disponibles allí.


  1. En la máquina donde desea ejecutar el cliente :

    instalación de pip – actualizar google-api-python-client


  1. 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