translator traducir google python beautifulsoup urllib2 google-translate

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.



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

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

    instalación de pip --upgrade 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