← На главную

Ковыряю Google Search API

Наверняка многие знают про Google Custom Search. Это сервис гугла, который позволяет добавить на свой сайт форму поиска. Поиск может происходить либо по вашему сайту, либо по указанному вами множеству сайтов.

Что интересно – вся «установка» этого дела сводится к копированию JavaScript-кода на нужную страницу. Грубо говоря, можно создать какой-нибудь поисковик кулинарных рецептов, воспользовавшись только Custom Search и хостингом narod.ru.

Прибыль Google от использования Custom Search понятная – в результатах поиска показывается реклама (которую, кстати, успешно вырезает Adblock Plus). Выгода пользователей – возможность создать поисковик, заточенный под свои нужды и снижение нагрузки на сайт.

Это был рассказ о том, что в общем-то ни для кого не является секретом. А вот что на самом деле интересно. Результаты поиска отображаются на странице без ее обновления. Значит, используется Ajax. А там, где используется Ajax, имеет место легкий парсинг и следовательно – практически API.

Если немного погуглить, то можно найти официальное описание интерфейса к поиску Google. Если вкратце, то мы можем послать GET-запрос вида:

http://ajax.googleapis.com/ajax/services/search/web?v=1.0 &q=site:eax.me%20perl&start=0

И получить результаты в JSON. С помощью необязательного аргумента start можно «листать страницы». Вообще тут применимы все те аргументы, которые мы видим в адресной строке при поиске в Google. Еще можно заглянуть в панель управления Google Custom Search и найти так называемый «уникальный идентификатор поисковой системы» – с его помощью можно производить поиск только по требуемому множеству сайтов:

http://ajax.googleapis.com/ajax/services/search/web?v=1.0 &cx=015133580201698550960:uxetybz281s&q=google

Если нам хочется воспользоваться средствами расширенного поиска Google, можно просто выполнить запрос на google.com и посмотреть в адресной строке, какие аргументы используются. К сожалению, похоже, что не все из них работают. Вот пример запроса, с помощью которого я хотел найти упоминания в блогах о FreeBSD – не получилось.

http://ajax.googleapis.com/ajax/services/search/web?v=1.0 &tbs=blg:1&lr=lang_ru&q=freebsd

И напоследок – еще один интересный факт. JavaScript, который в панели управления Google Custom Search предлагается разместить у себя на сайте, по каким-то причинам использует для получения результатов поиска совершенно другой интерфейс. То есть не тот, что описан в упомянутой выше документации. Я воспользовался замечательным плагином для Firefox под названием Firebug и посмотрел, откуда берутся данные:

Firebug в действии

Если убрать все «лишние» аргументы, то получится следующее:

http://www.google.com/uds/GwebSearch?v=1.0 &cx=015133580201698550960:uxetybz281s&q=yandex

Не знаю, что мешало Google использовать собственный же API. Но если они вдруг когда-нибудь его закроют, у нас может остаться запасной вариант.