Python script to translate via google translate

岁酱吖の 提交于 2019-11-29 05:13:29

Google translate is meant to be used with a GET request and not a POST request. However, urrllib2 will automatically submit a POST if you add any data to your request.

The solution is to construct the url with a querystring so you will be submitting a GET.
You'll need to alter the request = urllib2.Request('http://www.translate.google.com', urllib.urlencode(data)) line of your code.

Here goes:

querystring = urllib.urlencode(data)
request = urllib2.Request('http://www.translate.google.com' + '?' + querystring )

And you will get the following output:

<span id="result_box" class="short_text">
    <span title="word" onmouseover="this.style.backgroundColor='#ebeff9'" onmouseout="this.style.backgroundColor='#fff'">
        parola
    </span>
</span>

By the way, you're kinda breaking Google's terms of service; look into them if you're doing more than hacking a little script for training.

Using requests

I strongly advise you to stay away from urllib if possible, and use the excellent requests library, which will allow you to efficiently use HTTP with Python.

I made this script if you want to check it: https://github.com/mouuff/Google-Translate-API : )

Yes their documentation is not so easy to uncover.

Here's what you do:

  1. In the Google Cloud Platform Console:

    1.1 Go to the Projects page and select or create a new project

    1.2 Enable billing for your project

    1.3 Enable the Cloud Translation API

    1.4 Create a new API key in your project, make sure to restrict usage by IP or other means available there.


  1. In the machine where you want to run the client:

    pip install --upgrade google-api-python-client


  1. Then you can write this to send translation requests and receive responses:

Here's the code:

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
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!