Как скачать цены с Яндекс-Маркета
А с использованием этой статьи - и того меньше.
Пример функции для отправки запросов для парсинга цен и характеристик Яндекс Маркета на PHP:
function get_data_curl($url,$arr_post=array())
{
global $TOKEN;
$headers=[
'Authorization: Token '.$TOKEN,
];
$ch=curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_HTTPHEADER,$headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION,true);
curl_setopt($ch, CURLOPT_TIMEOUT,30);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT,30);
if(count($arr_post)>0)
{
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($arr_post));
}
$data=curl_exec($ch);
$error=curl_error($ch);
curl_close($ch);
return $data;
}
Ответы на запросы поиска идентификаторов и цен приходят в виде номера задачи, по которому затем необходимо также сделать запрос для получения результата поиска товаров или парсинга цен на Яндекс Маркете:
{
"task_id": 12345
}
Подготовка
Вначале необходимо скачать список городов, с которым работает сервис. Это делается 1 раз, .т.к. данные больше не меняются.Запрос делается на урл apimarket.parserdata.ru/regions/
Ответ приходит в формате JSON:
[{"name":"Абаза","id":11339},{"name":"Абакан","id":1095},{"name":"Агаповка","id":11194},{"name":"Агинское","id":11233},{"name":"Адыгейск","id":11005},{"name":"Азнакаево","id":11120}, ... ,{"name":"Яшкино","id":11300},{"name":"Яя","id":11301}]
Эти идентификаторы соответствуют идентификаторам Яндекс-Маркета. К сожалению, на сервисе пока нет мелких городов, но как показывает практика, люди всё равно сравнивают цены по ближайшим крупным городам.
Шаг 1. Получаем идентификаторы карточек Яндекс-Маркета.
Далее необходимо найти ваши товары на Яндекс-Маркете, т.е. определить их идентификаторы, используя наименования.Запрос делается на адрес apimarket.parserdata.ru/task/search/
Пример массива, отправляемого в функцию get_data_curl , указанную в начале статьи:
$arr_post=[
'region_id' => $arr_town['Москва'],
'site_products' => [
['product_name' => 'Xiaomi Dreame V11'],
],
];
Ответ:
{
"count": 1,
"next": "null",
"previous": null,
"results": [{
"product_name": "Xiaomi Dreame V11",
"region_id": 213,
"region_name": "Москва",
"custom_fields": {
"custom_field_1": "артикул 1",
"custom_field_2": "код поставщика X",
"custom_field_3": null,
"custom_field_4": null,
"custom_field_5": null
},
"search": {
"model": "Пылесос Xiaomi Dreame V11",
"model_id": "673192011",
"link": "https://market.yandex.ru/product--pylesos-xiaomi-dreame-v11/673192011"}
}
],
"status": "DONE"
}
Если запрошен большой объём данных, то в параметре next будет ссылка на следующую страницу результата.
Шаг 2. Получаем информацию по идентификаторам из шага 1.
Используя найденные идентифкаторы, запрашиваем цены с Яндекс-Маркета.
Запрос отправляется на адрес apimarket.parserdata.ru/task/create/
Пример массива, отправляемого в функцию get_data_curl , указанную в начале статьи:
$arr_post=[
'region_ids' => array_values($arr_town),
'site_products' => [ ['site_product' => 673192011],
],
];
Ответ:
{
"count": 1,
"next": "null",
"previous": null,
"results": [
{
"site_product_id": 673192011,
"site_product_url": "https://market.yandex.ru/product/673192011/offers?lr=213&how=aprice&good-state=new",
"region_id": 213,
"region_name": "Москва",
"custom_fields": {
"custom_field_1": "000001",
"custom_field_2": null,
"custom_field_3": null,
"custom_field_4": null,
"custom_field_5": null
},
"offers": [{
"price": 12939.0,
"price_discount": 12000.0,
"price_promo": null,
"price_card": null,
"price_min": 12000.0,
"promo": null,
"shop_name": "wwwPleerru",
"shop_id": 720,
"delivery_cost": 188.0,
"delivery_region": "Доставка из Москвы",
"is_priority_region": true,
"price_with_delivery_cost": 13127.0,
"offer_name": "Пылесос Xiaomi Dreame V11",
"model_id": "673192011",
"url": "",
"warranty": true,
"on_stock": false,
"cheapest": true,
"premium": false,
"cpa": false
}]
}
]
}
Заключение
Сервис Parserdata, конечно, платный как и все остальные, но для работающего магазина оно того стоит. По сравнению с другими - выгодное сочетание стоимости и количества запросов. Плюс - кроме цен там можно запрашивать парсинг характеристик и изображений товаров с Яндекс-Маркета. Но об этом в другой статье. В целом механизм тот же, просто немного другие параметры запросов.