Python скрипт для перевода через гугл переводчик - PullRequest
3 голосов
/ 23 февраля 2012

Я пытаюсь выучить Python, поэтому я решил написать скрипт, который мог бы переводить что-то с помощью Google Translate.До сих пор я писал это:

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()

И теперь я застрял.Я не вижу никаких ошибок в нем, но он все еще не работает (я имею в виду, что скрипт будет работать, но он не будет переводить слово).

Кто-нибудь знает, как это исправить?(Извините за мой плохой английский)

Ответы [ 3 ]

8 голосов
/ 13 октября 2012

Я сделал этот скрипт, если вы хотите проверить его: https://github.com/mouuff/Google-Translate-API :)

5 голосов
/ 23 февраля 2012

Переводчик Google предназначен для использования с запросом GET, а не с запросом POST. Однако urrllib2 автоматически отправит POST, если вы добавите какие-либо данные в свой запрос.

Решение состоит в том, чтобы создать URL с помощью строки запроса, поэтому вы будете отправлять GET.
Вам нужно будет изменить строку request = urllib2.Request('http://www.translate.google.com', urllib.urlencode(data)) вашего кода.

Вот так:

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

И вы получите следующий вывод:

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

Кстати, вы как бы нарушаете условия обслуживания Google; изучите их, если вы делаете больше, чем просто взламываете небольшой сценарий для обучения.

Использование requests

Я настоятельно советую вам по возможности держаться подальше от urllib и использовать превосходную библиотеку requests, которая позволит вам эффективно использовать HTTP с Python.

3 голосов
/ 17 января 2017

Да, их документацию раскрыть не так просто.

Вот что вы делаете:

  1. В консоли облачной платформы Google :

    1.1 Перейдите на страницу "Проекты" и выберите или создайте новый проект

    1,2 Включите биллинг для вашего проекта

    1,3 Включите API-интерфейс Cloud Translation

    1.4 Создайте новый ключ API в своем проекте , убедитесь, что ограничивает использование по IP или другими доступными там средствами.


На компьютере, на котором вы хотите запустить клиент :

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


Затем вы можете написать это для отправки запросов на перевод и получения ответов:

Вот код :

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