Friday, June 20, 2008

Использование Google Search API и Google Translate API в Python

Как известно, Google предоставляет множество различных API для доступа к своим сервисам. Список и описание их можно найти здесь. Я же хочу остановиться на двух весьма удобных сервисах от Google - поиске и переводе. Точнее, хочется предложить простенький рецепт по использованию предоставляемых для них API из Python.

Google Search API и Google Translate API представляют собой AJAX API: вызовы функций - это HTTP запросы, ответ возвращается в формате JSON. В связи с последним нам понадобится библиотека simplejson для парсинга ответов. Итак, начнем с перевода.

def translate(text,langpair):
import urllib
import simplejson

query = urllib.urlencode({'q' : text.encode("utf-8"),'langpair':langpair})
url = u'http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&%s'.encode("utf-8") \
% (query)
search_results = urllib.urlopen(url)
json = simplejson.loads(search_results.read())
mess = json['responseData']['translatedText']
return mess

translated = translate("I am feeling lucky","en|ru")
print "Translated:", translated
Не сложнее и API для поиска:
def search(text):
import urllib
import simplejson

query = urllib.urlencode({'q' : text.encode("utf-8")})
url = u'http://ajax.googleapis.com/ajax/services/search/web?v=1.0&%s'.encode("utf-8") \
% (query)
search_results = urllib.urlopen(url)
json = simplejson.loads(search_results.read())
results = json['responseData']['results']
return results

results = search("text to search")
title = results[0]['title']
noh_title = title.replace('', '').replace('', '')
url = results[0]['url']
print noh_title+": "+url # Мне повезет! :)
Для работы API не требуется регистрации, что весьма приятно. Удачного применения!

3 comments:

  1. Самое неприятное, что перевод работает только с очень ограниченным количеством слов. Буквально - 1-2 предложения. Точный лимит нигде в документации не указан. Таким образом, нет никакого смысла использовать гугловский переводчик в большинстве случаев, когда нужно переводить целые посты.

    ReplyDelete
  2. Я этот код использовал для translate бота, и не проверял его на чем-нибудь длиннее одной строчки. Спасибо за информацию!

    ReplyDelete
  3. ApI-шка работает на 500 символов, если хотите больше режте тексты на предложения не привышающие 500 символов ))) Удачи.

    ReplyDelete