- PVSM.RU - https://www.pvsm.ru -

Custom Google Search View

Вы знаете, сколько данных вы качаете из сети каждый раз, чтобы увидеть вот эту страничку?

Custom Google Search View - 1

Если без браузерного кэша, то 600 килобайт (в gzip-e) и 38 запросов. Если с кэшем, то 70 килобайт и 7-8 запросов.

Custom Google Search View - 2

Вы знаете, что такое 600 килобайт? Это оба тома «Войны и мира» Льва Николаевича Толстого в том же gzip-e.

Конечно, отрадно, что Google Inc. пичкает нас таким количеством полезной информации. Про сами результаты поиска даже говорить не приходится — тут и картинки, и справочная информация из Википедии, и часы работы, и карта, и отзывы. Но иногда хочется чего-то простого и лаконичного. Без изнасилованных ссылок, без продаваемых товарищу майору сторонним маркетологам твоих веб кампейнов. Чтобы не тормозило на устаревших смартфонах и перегруженных мобильных сетях.

Можно, конечно, запроксировать запросы к поисковику через свой скрипт, с вивисекцией всего ненужного, но, к счастью, сам Google предлагает элегантное решение — доступ к своему Search API с выдачей чистых результатов в JSON или XML формате.

Вот часть JSON ответа для примера:

JSON

{
 "kind": "customsearch#search",
 "url": {
  "type": "application/json",
  "template": "https://www.googleapis.com/customsearch/v1?q={searchTerms}&num={count?}&start={startIndex?}&lr={language?}&safe={safe?}&cx={cx?}&sort={sort?}&filter={filter?}&gl={gl?}&cr={cr?}&googlehost={googleHost?}&c2coff={disableCnTwTranslation?}&hq={hq?}&hl={hl?}&siteSearch={siteSearch?}&siteSearchFilter={siteSearchFilter?}&exactTerms={exactTerms?}&excludeTerms={excludeTerms?}&linkSite={linkSite?}&orTerms={orTerms?}&relatedSite={relatedSite?}&dateRestrict={dateRestrict?}&lowRange={lowRange?}&highRange={highRange?}&searchType={searchType}&fileType={fileType?}&rights={rights?}&imgSize={imgSize?}&imgType={imgType?}&imgColorType={imgColorType?}&imgDominantColor={imgDominantColor?}&alt=json"
 },
 "queries": {
  "request": [
   {
    "title": "Google Custom Search - habr",
    "totalResults": "327000",
    "searchTerms": "habr",
    "count": 10,
    "startIndex": 1,
    "inputEncoding": "utf8",
    "outputEncoding": "utf8",
    "safe": "off",
    "cx": "0019687164026253:oi9ssr7ci6e"
   }
  ],
  "nextPage": [
   {
    "title": "Google Custom Search - habr",
    "totalResults": "327000",
    "searchTerms": "habr",
    "count": 10,
    "startIndex": 11,
    "inputEncoding": "utf8",
    "outputEncoding": "utf8",
    "safe": "off",
    "cx": "00156687164026253:oi9ssr7ci6e"
   }
  ]
 },
 "context": {
  "title": "v-gornom.ru"
 },
 "searchInformation": {
  "searchTime": 0.531851,
  "formattedSearchTime": "0,53",
  "totalResults": "327000",
  "formattedTotalResults": "327 000"
 },
 "items": [
  {
   "kind": "customsearch#result",
   "title": "Лучшие публикации за сутки / Хабр",
   "htmlTitle": "Лучшие публикации за сутки / u003cbu003eХабрu003c/bu003e",
   "link": "https://habr.com/",
   "displayLink": "habr.com",
   "snippet": "Хабр – самое крупное в Рунете сообщество людей, занятых в индустрии nвысоких технологий. Уникальная аудитория, свежая информация, ...",
   "htmlSnippet": "u003cbu003eХабрu003c/bu003e – самое крупное в Рунете сообщество людей, занятых в индустрии u003cbru003enвысоких технологий. Уникальная аудитория, свежая информация, ...",
   "cacheId": "Wg3CgcvcAxUJ",
   "formattedUrl": "https://habr.com/",
   "htmlFormattedUrl": "https://u003cbu003ehabru003c/bu003e.com/",
   "pagemap": {
    "cse_thumbnail": [
     {
      "width": "311",
      "height": "162",
      "src": "https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcT9MbmejtANdWSuXxH7pxKqWNFFRzPiTQuLmhWk5Tc5-Y-AgUgPrwEz0MV9"
     }
    ],
    "metatags": [
     {
      "viewport": "width=1024",
      "fb:app_id": "444736788986613",
      "og:type": "website",
      "fb:pages": "472597926099084",
      "og:site_name": "Хабр",
      "og:image": "https://habr.com/images/habr.png",
      "og:image:width": "1200",
      "og:image:height": "628",
      "og:title": "Лучшие публикации за сутки / Хабр",
      "og:description": "Хабр – самое крупное в Рунете сообщество людей, занятых в индустрии высоких технологий. Уникальная аудитория, свежая информация, конструктивное общение и коллективное творчество – всё это делает Хабр самым оригинальным IT-проектом в России.",
      "yandex-verification": "71593b225aeafc4e",
      "referrer": "unsafe-url",
      "pocket-site-verification": "ed24b2b9721edf0a282c5b4a3232c4",
      "application-name": "Хабр",
      "msapplication-tilecolor": "#77a2b6",
      "theme-color": "#77a2b6"
     }
    ],
    "cse_image": [
     {
      "src": "https://habr.com/images/habr.png"
     }
    ]
   }
  },
  {
   "kind": "customsearch#result",
   "title": "Хабр — Википедия",
   "htmlTitle": "u003cbu003eХабрu003c/bu003e — Википедия",
   "link": "https://ru.wikipedia.org/wiki/%D0%A5%D0%B0%D0%B1%D1%80",
   "displayLink": "ru.wikipedia.org",
   "snippet": "Хабр (бывший Хабрахабр) — русскоязычный веб-сайт в формате nколлективного блога с элементами новостного сайта, созданный для nпубликации ...",
   "htmlSnippet": "u003cbu003eХабрu003c/bu003e (бывший u003cbu003eХабрахабрu003c/bu003e) — русскоязычный веб-сайт в формате u003cbru003enколлективного блога с элементами новостного сайта, созданный для u003cbru003enпубликации ...",
   "cacheId": "lB7MkUOxB7gJ",
   "formattedUrl": "https://ru.wikipedia.org/wiki/Хабр",
   "htmlFormattedUrl": "https://ru.wikipedia.org/wiki/u003cbu003eХабрu003c/bu003e",
   "pagemap": {
    "cse_thumbnail": [
     {
      "width": "220",
      "height": "130",
      "src": "https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcQqJU0itnwYGZAd6Z5aMJO0izPfF7cab6pc40vm0sujOP2dSgkP-UB0Je1T"
     }
    ],
    "metatags": [
     {
      "referrer": "origin",
      "og:image": "https://upload.wikimedia.org/wikipedia/ru/7/7f/Habrahabr_logo.png"
     }
    ],
    "cse_image": [
     {
      "src": "https://upload.wikimedia.org/wikipedia/ru/7/7f/Habrahabr_logo.png"
     }
    ]
   }
  },

В этой статье мы напишем View для Google Custom Search, которое будет обладать мощью Google и удовлетворять наши приземленные желания.

Чтобы получить доступ Google Custom Search API сперва нужно получить идентификатор своей поисковой системы. Для этого надо зарегистрировать систему пользовательского поиска на странице cse.google.com [1]
Заходим на сайт, добавляем поисковую систему, указываем произвольный сайт, заходим в панель управления и получаем идентификатор поисковой системы.

Теперь надо получить токен для доступа к Custom Search API.
Заходим на console.cloud.google.com [2] (предполагается, что аккаунты на обоих сайтах у вас уже есть), создаем проект, в левом боковом меню выбирает «API и сервисы» -> «Панель управления» -> «Включить API и сервисы», ищем там «Custom Search API», выбираем, включаем, затем создаем учетные данные — а именно, «Ключ API». Можно ограничить использование данного ключа только на своих IP, можно не делать этого.

Всё. Теперь мы можем отправлять запросы Google вот такой строкой:
https://www.googleapis.com/customsearch/v1?key={apikey}&cx={sid}&q=query
Где {apikey} — токен доступа, {sid} — идентификатор поиска.
В ответ мы получим чистенький JSON.

C помощью простого php скрипта [3] мы получаем наше View, даже с некоторым приближением к оригиналу. Первая страница:

Custom Google Search View - 3

Результаты поиска:

Custom Google Search View - 4

Первая страничка — 2Кб, с результатами поиска — 6Кб.

Дело тут не только в минимализме. Google в JSON ответе выдает кучу интересной информации и позволяет задать запрос с не меньшей кучей параметров. Подробнее тут [4]. Можно даже сделать то, что не позволяет основная страница поисковика.

Есть, конечно, и минусы — ограничение в 100 запросов в день. Остальное за доллары.

Кстати, захостить наш php скриптик можно тоже на Google и тоже абсолютно бесплатно — на https://appengine.google.com [5]. Правда, тут уже придется изрядно помучиться — FTP, web file manager и корневые директории сайта для Google рудименты. Поэтому придется превратить php скрипт в аппликейшн, засунуть его в энджин и с помощью специальной консоли задеплоить в облака.

Задача, на самом деле, не тривиальная. Не зря Google собирается вводить новую сертификацию — Google Certified User.

Автор: altrus

Источник [6]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/google/290309

Ссылки в тексте:

[1] cse.google.com: http://cse.google.com

[2] console.cloud.google.com: http://console.cloud.google.com

[3] простого php скрипта: https://github.com/altrusl/misc/blob/master/index.php

[4] тут: https://developers.google.com/custom-search/json-api/v1/reference/cse/list

[5] https://appengine.google.com: https://appengine.google.com

[6] Источник: https://habr.com/post/421173/?utm_campaign=421173