Приклад використання Product API від Fetchee для парсингу товарів інтернет-магазину

image

У цій інструкції ми розповімо про те, як з допомогою Fetchee Product API отримати дані про товар URL на прикладі інтернет-магазину lamoda.

Для тих, хто не читав нашу минулу замітку — Product API буде корисний розробників, яким потрібно отримувати дані про товари з будь-якого магазину, але які не хочуть витрачати час на створення власної системи парсинга або вже усвідомили, що open-source бібліотеки володіють істотними обмеженнями і вимагають багато часу на підтримку. Наш автоматичний і не вимагає налаштування API для парсингу eCommerce даних дає можливість зосередиться на розробці основних функцій програми. До того ж спробувати його дуже просто. Деталі під катом.

Для початку вам знадобиться ключ доступу до API. Залиште заявку на https://fetch.ee/ru/developers/. Ми надаємо доступ всім бажаючим і зазвичай відповідаємо на заявки протягом 24-х годин.

1. Відправка запиту на парсинг товару URL

Зверніть увагу, що API приймає тільки POST запити у форматі application/json на URL https://fetch.ee/api/v1/product:

{
"url":"<URL ТОВАРУ>",
"api_key":"<API КЛЮЧ>",
"callback_url":"<URL ДЛЯ ВІДПРАВКИ РЕЗУЛЬТАТУ ПАРСИНГА>"
}


Приклад запиту для товару за адресою http://www.lamoda.ru/p/ug174awohj47/shoes-uggaustralia-uggi/ буде виглядати наступним чином (ми додали демонстраційний API ключ, який проживе кілька днів):

curl -X POST -H "Content-type: application/json" -d '{"url": "http://www.lamoda.ru/p/ug174awohj47/shoes-uggaustralia-uggi/", "api_key": "01ed6a957225ba8bf106f817135c609f", "callback_url": "http://requestb.in/16s123v1"}' https://fetch.ee/api/v1/product


Всі параметри обов'язкові, якщо якогось із них не буде, то сервер поверне помилку 403, як і у випадку неправильного API-ключа.

Product API обробляє запити асинхронно, час отримання відповіді може варіюватися від декількох секунд до декількох десятків хвилин. Це пов'язано з навантаженням на систему в конкретному географічному регіоні. API відправить дані на вказаний вами URL по завершенні парсинга (callback_url).

Максимальний час очікування становить 30 хвилин, після чого в будь-якому випадку буде відправлено відповідь з результатом або повідомлення про неможливість завершити парсинг товару за вказаним URL.

Для тестування API зручно використовувати сервіс http://requestb.in. Заведіть на ньому новий контейнер (Create a RequestBin) і вказуйте отриманий URL в якості callback_url. Усі відповіді від API будуть приходити на нього, просто оновлюйте сторінку браузері.

2. Поля і варіанти відповіді API

У відповіді використовуються наступні поля:
  • success – результат відправки URL на парсинг;
  • id – унікальний ID запиту;
  • already_processed – запит вже був нещодавно оброблений;
  • not_shop – URL не належить магазину;
  • not_product – за даним URL немає даних про товар.
Будь-яке з полів, крім success, може бути відсутнім.

Відразу після запиту, ви отримаєте відповідь у форматі JSON. ID потрібен для зіставлення надісланих запитів та отриманих на callback_url відповідей. В даному випадку все пройшло чудово і товар був прийнятий на парсинг.
{
"success": true,
"id": "583ea83a09e9497a0eb1b82a"
}


Така відповідь буде, якщо ви спробуєте надіслати на парсинг URL, який вже був оброблений менше 6 годин тому. В даному випадку виклику на callback_url не буде.
{
"success":true,
"id":"583ea83a09e9497a0eb1b82a",
"already_processed":true
}


Даний відповідь ви отримаєте, якщо API вже знає, що вказаний URL не відноситься до сайту інтернет-магазину. Товар не додається на парсинг і виклику callback_url не буде. Ми ведемо чорний список сайтів, куди входять у тому числі сумнівні та партнерські магазини (виступають як вітрини з товарами інших магазинів).
{
"success":false,
"not_shop":true
}


Коли API знає, що за даним URL немає товару (сторінка категорії, головна сторінка магазину тощо). Товар не додається на парсинг і виклику callback_url не буде.
{
"success":false,
"not_product":true
}


3. Отримання результату парсинга

API відправляє POST запит з відповіддю в JSON на зазначений у callback_url адресу. Через 20 секунд ми отримали такий результат парсинга:
{
"id":"583ea83a09e9497a0eb1b82a",
"url":"http://www.lamoda.ru/p/ug174awohj47/shoes-uggaustralia-uggi/",
"created_at":"2016-11-30T10:21:46.865 Z",
"title":"Взуття уггі UGG Australia",
"price":22800,
"currency":"RUB",
"img_url":"https://fetch.ee/assets/item-images/583e/a843a9436d700e54ef37.jpg",
"brand":"UGG Australia"
}


Розглянемо отриманий JSON більш докладно. У відповіді завжди присутні 3 обов'язкові параметри:
  • id – унікальний ID запиту;
  • url – остаточний URL товару (якщо були редиректи, або ми вирізали різні непотрібні query_params з URL (UTM-мітки, наприклад);
  • created_at – час створення запиту на парсинг товару;


Будь-який з наступних параметрів може бути відсутнім:
  • title – назва товару;
  • price – ціна;
  • currency – код валюти (наприклад, RUB, USD, EUR);
  • img_url – посилання на зображення товару;
  • brand – виробник товару;
  • out_of_stock: true – коли товар відсутній у продажу;
  • removed: true – коли товар взагалі зник з магазину і відбувається перенаправлення на сторінку категорії, головну сторінку магазину або отримуємо 404 відповідь від сервера;
  • not_shop: true – коли за час парсинга API визначив, що URL не належить магазину, хоча раніше прийняв запит на обробку;
  • not_product: true – коза за час парсинга API визначив, що URL не містить інформації про товар, хоча запит на обробку був прийнятий;
  • unprocessed: true – коли Product API не зміг отримати ключові параметри товару title або price.


Якщо Product API може бути вам корисний, залишайте заявку на fetch.ee/ru/developers! Напишіть в коментарях які ще параметри товарів чи хотіли б ви отримати на додаток до вже доступним?
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.