Ковыряю Google Search API
12 мая 2010
Что называется, «поперло». Раньше неделями в блог не писал, а сейчас вот пишу второй пост за 12 часов. Притом пост совершенно незапланированный.
Наверняка многие знают про Google Custom Search. Но на всякий случай напомню — это сервис гугла, который позволяет добавить на свой сайт форму поиска. Поиск может происходить либо по Вашему сайту, либо по указанному Вами множеству сайтов.
Что интересно — вся «установка» этого дела сводится к копированию JavaScript-кода на нужную страницу. Грубо говоря, можно создать какой-нибудь поисковик кулинарных рецептов, воспользовавшись только Custom Search и хостингом narod.ru.
Прибыль Google от использования Custom Search понятная — в результатах поиска показывается реклама (которую, кстати, успешно вырезает Adblock Plus). Выгода пользователей — возможность создать поисковик, заточенный под свои нужды и снижение нагрузки на сайт.
Обратите внимание на механизм уточнений — можно искать как по всему сайту, так и только по блогу или только по форуму.
Это был рассказ о том, что в общем-то ни для кого не является секретом. А вот что на самом деле интересно. Как не сложно заметить, результаты поиска отображаются на нашей странице без ее обновления. Очевидно, имеет место использование Ajax. А там, где используется Ajax, имеет место легкий парсинг и следовательно — практически API.
Если немного погуглить, то несложно найти официальное описание интерфейса к поиску Google. Если вкратце, то мы можем послать GET-запрос вида:
&q=site:eax.me%20perl&start=0
И получить результаты в JSON. С помощью необязательного аргумента start можно «листать страницы». Вообще тут применимы все те аргументы, которые мы видим в адресной строке при поиске в Google. Еще можно заглянуть в панель управления Google Custom Search и найти так называемый «уникальный идентификатор поисковой системы» — с его помощью можно производить поиск только по требуемому множеству сайтов:
&cx=015133580201698550960:uxetybz281s&q=google
Если нам хочется воспользоваться средствами расширенного поиска Google, можно просто выполнить запрос на google.com и посмотреть в адресной строке, какие аргументы используются. К сожалению, похоже, что не все из них работают. Вот пример запроса, с помощью которого я хотел найти упоминания в блогах о FreeBSD — не получилось.
&tbs=blg:1&lr=lang_ru&q=freebsd
И напоследок — еще один интересный факт. JavaScript, который в панели управления Google Custom Search предлагается разместить у себя на сайте, по каким-то причинам использует для получения результатов поиска совершенно другой интерфейс. То есть не тот, что описан в упомянутой выше документации. Я воспользовался замечательным плагином для Firefox под названием Firebug и посмотрел, откуда берутся данные:
Если убрать все «лишние» аргументы, то получится следующее:
&cx=015133580201698550960:uxetybz281s&q=yandex
Не знаю, что помешало Google использовать собственный же API. Но они его вдруг когда-нибудь закроют, у нас может остаться запасной вариант…
Метки: Всячина.
Вы можете прислать свой комментарий мне на почту, или воспользоваться комментариями в Telegram-группе.