Ковыряю Google Search API

12 мая 2010

Что называется, «поперло». Раньше неделями в блог не писал, а сейчас вот пишу второй пост за 12 часов. Притом пост совершенно незапланированный.

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

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

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

Google Custom Search

Обратите внимание на механизм уточнений — можно искать как по всему сайту, так и только по блогу или только по форуму.

Это был рассказ о том, что в общем-то ни для кого не является секретом. А вот что на самом деле интересно. Как не сложно заметить, результаты поиска отображаются на нашей странице без ее обновления. Очевидно, имеет место использование 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. Но они его вдруг когда-нибудь закроют, у нас может остаться запасной вариант…

Метки: .


Вы можете прислать свой комментарий мне на почту, или воспользоваться комментариями в Telegram-группе.