Pull to refresh
0
Fetchee
Покупайте нужные вещи дешевле

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

Reading time4 min
Views20K
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\": \"0e2bc30838d8bbbbbec787667c4ff34b\", \"callback_url\": \"http://requestb.in/onpdf2on\"}" https://fetch.ee/api/v1/product

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

ВАЖНО: В примере указан временный callback_url. Он перестанет действовать через пару часов, заменяйте его своим URL, который можно получить на http://requestb.in.

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
}

Когда система знает, что по данному 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.865Z",
   "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! Напишите в комментариях какие ещё параметры товаров вы бы хотели получать в дополнение к уже доступным?
Tags:
Hubs:
+9
Comments42

Articles

Change theme settings

Information

Website
fetch.ee
Registered
Employees
2–10 employees
Location
Россия