Как я могу использовать API JSON Google Переводчик? - PullRequest
3 голосов
/ 16 июля 2009

Я пытаюсь использовать Google Translate из Python с текстом UTF-8. Как я могу назвать JSON API? У них есть документ для встраивания его в html, но я нигде не могу найти подходящий API или wsdl.

Спасибо Рафаэль

Ответы [ 4 ]

7 голосов
/ 16 июля 2009

Вот код, который, наконец, работает для меня. Использование сайта без ajax api может заблокировать ваш ip, так что это лучше.

#!/usr/bin/env python
from urllib2 import urlopen
from urllib import urlencode
import urllib2
import urllib
import simplejson
import sys

# The google translate API can be found here:
# http://code.google.com/apis/ajaxlanguage/documentation/#Examples
def translate(text = 'hola querida'):
    tl="es"
    sl="en"
    langpair='%s|%s'%(tl,sl)



    base_url='http://ajax.googleapis.com/ajax/services/language/translate?'
    data = urllib.urlencode({'v':1.0,'ie': 'UTF8', 'q': text.encode('utf-8'),
                             'langpair':langpair})


    url = base_url+data

    search_results = urllib.urlopen(url)

    json = simplejson.loads(search_results.read())


    result = json['responseData']['translatedText']
    return result
2 голосов
/ 01 мая 2011

Используйте xgoogle от Петерис Краминс ( Его блог )

>>> from xgoogle.translate import Translator
>>>
>>> translate = Translator().translate
>>>
>>> print translate("Mani sauc Pēteris", lang_to="en")
My name is Peter
>>>
>>> print translate("Mani sauc Pēteris", lang_to="ru").encode('utf-8')
Меня зовут Петр
>>>
>>> print translate("Меня зовут Петр")
My name is Peter
1 голос
/ 25 марта 2010

Посмотри, что я нашел: http://code.google.com/intl/ru/apis/ajaxlanguage/terms.html

Вот интересная часть:

Вы не будете и не разрешите своим конечным пользователям или другим третьим лицам: .... * отправить любой запрос длиной более 5000 символов; ....

0 голосов
/ 16 июля 2009

Я думаю, вы говорите о AJAX API http://code.google.com/apis/ajaxlanguage/, который должен быть использован из javascript, поэтому я не понимаю, что вы подразумеваете под "google translate from python"

В качестве альтернативы, если вам нужно использовать функцию перевода из python, вы можете напрямую запросить страницу перевода и проанализировать ее, используя xml / html libs, например. красивый суп, html5lib

На самом деле я так и делал, и красивый суп не работал на Google Translate, но html5lib (http://code.google.com/p/html5lib/) сделал

вам нужно будет сделать что-то подобное (скопировано из моей большой базы кода)

def translate(text, tlan, slan="en"):

    opener = urllib2.build_opener()
    opener.addheaders = [('User-agent', 'translate.py/0.1')]

    htmlPage = opener.open(
            "http://translate.google.com/translate_t?" + 
            urllib.urlencode({'sl': slan, 'tl':tlan}),
            data=urllib.urlencode({'hl': 'en',
                                   'ie': 'UTF8',
                                   'text': text.encode('utf-8'),
                                   'sl': slan, 'tl': tlan})
        )

    parser = html5lib.HTMLParser(tree=treebuilders.getTreeBuilder("etree", cElementTree))

    etree_document = parser.parse(htmlPage)

    return _getResult(etree_document)
...