Custom Google Search, View

Ви знаєте, скільки даних ви качаєте з мережі кожен раз, щоб побачити ось цю сторіночку?

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

Ви знаєте, що таке 600 кілобайт? Це обидва томи «Війни і миру» Льва Миколайовича Толстого в тому ж gzip.

Звичайно, втішно, що 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"
}
]
},
 "контекст": {
 "title": "v-gornom.ru"
},
 "searchInformation": {
 "searchTime": 0.531851,
 "formattedSearchTime": "0,53",
 "totalResults": "327000",
 "formattedTotalResults": "327 000"
},
 "items": [
{
 "kind": "customsearch#result",
 "title": "Найкращі публікації за добу / Blogchain",
 "htmlTitle": "Найкращі публікації за добу / u003cbи003еBlog"u003c/bu003e,
 "link": "https://www.blogchain.com.ua",
 "displayLink": "www.blogchain.com.ua",
 "snippet": "Blogchain – найбільша в Україні спільнота людей, зайнятих в індустрії технологій. Унікальна аудиторія, свіжа інформація, що ...",
 "htmlSnippet": "u003cbи003еХабрu003c/bu003e – найбільша в Украіні спільнота людей, зайнятих в індустрії u003cbru003e нових технологій. Унікальна аудиторія, свіжа інформація, що ...",
 "cacheId": "Wg3CgcvcAxUJ",
 "formattedUrl": "https://www.blogchain.com.ua/",
 "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": "Blog",
 "og:image": "https://www.blogchain.com.ua/images/logo.png",
 "og:image:width": "1200",
 "og:image:height": "628",
 "og:title": "Найкращі публікації за добу",
 "og:description": "Blogchain",
 "yandex-verification": "71593b225aeafc4e",
 "referrer": "unsafe-url",
 "pocket-site-verification": "ed24b2b9721edf0a282c5b4a3232c4",
 "application-name": "Blogchain",
 "msapplication-tilecolor": "#77a2b6",
 "theme-color": "#77a2b6"
}
],
 "cse_image": [
{
 "src": "https://www.blogchain.com.ua/images/logo.png"
}
]
}
},
{
 "kind": "customsearch#result",
 "title": "Вікіпедія",
 "htmlTitle": "u003cbи003еХабрu003c/bu003e — Вікіпедія",
 "link": "https://ru.wikipedia.org/wiki/%D0%A5%D0%B0%D0%B1%D1%80",
 "displayLink": "— веб-сайт у форматі u003cbru003eпколлективного блогу з елементами новинного сайту, створений для u003cbru003eппубликации ...",
 "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/_logo.png"
}
]
}
 },

У цій статті ми напишемо View Google Custom Search, яке буде володіти силою Google і задовольняти наші приземлені бажання.
Щоб отримати доступ Google Custom Search API спершу потрібно отримати ідентифікатор своєї пошукової системи. Для цього треба зареєструвати систему користувальницького пошуку на сторінці cse.google.com

Читайте також  Аномалія Франго

Заходимо на сайт, додаємо пошукову систему, вказуємо довільний сайт, заходимо в панель управління і отримуємо ідентифікатор пошукової системи.

Тепер треба отримати маркер для доступу до Custom Search API.

Заходимо на console.cloud.google.com (передбачається, що акаунти на обох сайтах у вас вже є), створюємо проект, у лівому боковому меню вибирає «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 скрипта ми отримуємо наше View, навіть з деяким наближенням до оригіналу. Перша сторінка:

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

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

Справа тут не тільки в мінімалізмі. Google в JSON відповіді видає купу цікавої інформації і дозволяє задати запит з не меншою купою параметрів. Докладніше тут. Можна навіть зробити те, що не дозволяє головна сторінка пошуковика.

Є, звичайно, і мінуси — обмеження в 100 запитів в день. Решта за долари.

До речі, захостить наш php скриптик можна теж на Google і теж абсолютно безкоштовно — на https://appengine.google.com. Правда, тут вже доведеться неабияк помучитися — FTP, web file manager і кореневі директорії сайту для Google рудименти. Тому доведеться перетворити php скрипт в апплікейшен, засунути його в енджін і з допомогою спеціальної консолі задеплоіти в хмару.

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

Читайте також  Як дізнатися ємність батареї ноутбука в Windows 10

Степан Лютий

Обожнюю технології в сучасному світі. Хоча частенько і замислююся над тим, як далеко вони нас заведуть. Не те, щоб я прям і знаюся на ядрах, пікселях, коллайдерах і інших парсеках. Просто приходжу в захват від того, що може в творчому пориві вигадати людський розум.

You may also like...

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *