Shop::Wildberries::ProductsList: парсер списка товаров Wildberries
Обзор парсера товаров Shop::Wildberries::ProductsList
Используя парсер товаров Wildberries, вы можете получать данные о товарах из результатов поиска по ключевому слову или из списка товаров конкретной категории или бренда. С его помощью можно собрать базу ссылок на товары, отслеживать динамику цен на товар, изменения количества отзывов или рейтинга, собрать картинки товаров или информацию о доступных цветах и размерах. Также отдельно собирается список рекламных обьявлений с указанием позиции каждого в органической выдаче. Парсер предоставляет возможность задавать сортировку результатов и указывать пункт выдачи.
Функционал A-Parser позволяет сохранять настройки парсинга для дальнейшего использования (пресеты), задавать расписание парсинга и многое другое. Вы можете использовать автоматическое размножение запросов, подстановку подзапросов из файлов, перебор цифро-буквенных комбинаций и списков для получения максимально возможного количества результатов.
Собираемые данные
- Количество товаров
- Название товара
- Ссылка на товар
- Картинка товара
- Бренд
- Цена и старая цена
- Рейтинг и число отзывов
- Размеры и/или цвета
- Для рекламных обьявлений - позиция в списке товаров
- Список ключей из "Еще ищут" и "Возможно вам понравится"
Варианты использования
- Сбор ссылок на товары
- Оценка популярности товаров
- Отслеживание динамики цен и популярности товаров
- Сбор массива изображений товаров
- Определение позиций рекламных обьявлений
Примеры запросов
В качестве запросов можно использовать:
- ссылки на список товаров бренда, например:
https://www.wildberries.ru/brands/kristiano-fashion
https://www.wildberries.ru/brands/s-a-s
- ссылки на список товаров в категории, например:
https://www.wildberries.ru/catalog/elektronika/razvlecheniya-i-gadzhety/igrovye-konsoli/playstation
https://www.wildberries.ru/catalog/avtotovary/shiny-i-diski/shiny
- ключевые слова, точно так же, как если бы вы их вводили прямо в форму поиска Wildberries, например:
xiaomi mi10
футболки и майки
магнитола
Подстановки запросов
При использовании в качестве запросов ключевых слов можно использовать встроенные макросы для разможения запросов, например если требуется получить больше результатов, чем предоставляет обычная поисковая выдача.
Например, для вышеперечисленных ключевых слов в формате запроса укажем перебор символов от a до zzzz, данный метод позволяет максимально ротировать поисковую выдачу и получать множество новых уникальных результатов:
$query {az:a:zzzz}
Данный макрос создаст 475254
дополнительных запросов на каждый исходный поисковый запрос, что в сумме даст 4 х 475254 = 1901016
поисковых запроса, цифра впечатляющая, но это совсем не проблема для A-Parser'а.
Варианты вывода результата
Вывод в csv
Вы можете использовать Шаблнизатор Template-Toolkit для вывода результата в csv, например мы можем записать в файл csv такие колонки: Сссылка на товар, Название товара, Цена, Старая цена, Рейтинг, Кол-во отзывов
Формат результата:
[% FOREACH item IN items;
tools.CSVline(item.link, item.name, item.price, item.oldPrice, item.rating, item.reviews);
END %]
Приимер результата:
https://www.wildberries.ru/catalog/54067214/detail.aspx,"Шапка бини женская",703,1900,5,6
https://www.wildberries.ru/catalog/41415461/detail.aspx,"Шапка бини женская / бини с отворотом / Бини (beanie)",1487,1750,5,346
https://www.wildberries.ru/catalog/16782596/detail.aspx,"Шапка бини женская / бини с отворотом / Бини (beanie)",1487,1750,5,346
https://www.wildberries.ru/catalog/9468600/detail.aspx,"Шапка с шарфом / с перчатками / бини женская",2700,4500,5,137
https://www.wildberries.ru/catalog/4750212/detail.aspx,"Берет",765,1075,5,349
https://www.wildberries.ru/catalog/9793364/detail.aspx,"Берет с шарфом",3297,4710,5,307
Вывод бренда, названия и цены
Формат результата:
$items.format('$brand, $name, $price\n')
Пример результата:
Xiaomi, Смартфон Poco X3 Pro / 6.67'' / 2400x1080 / IPS / 8 ГБ / 256 ГБ / 5160 мА*ч, 23751
Realme, Смартфон realme 8 / 6.4'' / 2400x1080 / Super AMOLED / 6 ГБ / 128 ГБ / 5000 mAh, 19911
Apple, Смартфон iPhone 11 128GB / 6.1'' / 1792x828 / Liquid Retina HD / 128 ГБ, 54990
Apple, Смартфон iPhone 12 128GB / 6.1'' / 2532x1170 / OLED / 128 ГБ, 69990
Samsung, Смартфон Galaxy A32 / 6.4'' / 2400x1080 / Super AMOLED / 4 ГБ / 128 ГБ / 5000 мАч, 19791
Вывод c названиями переменных
Формат результата:
$items.format('Бренд: $brand, Название: $name, Цена: $price\n')
Пример результата:
Бренд: Samsung, Название: Смартфон Galaxy A32 / 6.4'' / 2400x1080 / Super AMOLED / 4 ГБ / 128 ГБ / 5000 мАч, Цена: 19791
Бренд: Realme, Название: Смартфон realme 8 / 6.4'' / 2400x1080 / Super AMOLED / 6 ГБ / 128 ГБ / 5000 mAh, Цена: 19911
Бренд: Honor, Название: Смартфон Honor 50 / 6.57'' / 2340x1080 / OLED / 6 ГБ / 128 ГБ / 4300 мА*ч, Цена: 31490
Бренд: Apple, Название: Смартфон iPhone 13 256GB / 6.1'' / 2532x1170 / OLED / 256 ГБ, Цена: 89990
Бренд: Xiaomi, Название: Смартфон 6.53'' / 1600x720 / 2 ГБ / 32 ГБ / 5000 мА*ч, Цена: 8990
Вывод c новой переменной
Выведем результат, с переменной discount, которая покажет процент скидки на товар
Формат результата:
[% USE Math;
FOREACH item IN p1.items;
discount = item.oldPrice ? (item.oldPrice - item.price) / item.oldPrice * 100 : 0;
tools.CSVline(item.name, item.price, Math.int(discount + 0.5) _ '%');
END %]
Пример результата:
"Смартфон Poco X3 Pro / 6.67'' / 2400x1080 / IPS / 8 ГБ / 256 ГБ / 5160 мА*ч",23751,12%
"Смартфон realme 8 / 6.4'' / 2400x1080 / Super AMOLED / 6 ГБ / 128 ГБ / 5000 mAh",19911,17%
"Смартфон iPhone 12 128GB / 6.1'' / 2532x1170 / OLED / 128 ГБ",69990,0%
"Смартфон Galaxy A32 / 6.4'' / 2400x1080 / Super AMOLED / 4 ГБ / 128 ГБ / 5000 мАч",19791,10%
"Смартфон galaxy a52 / 6.5'' / 1080x2400 / Super AMOLED / 8 ГБ / 256 ГБ / 4500 мА*ч",28691,18%
Сохранение в формате дампа SQL
Формат результата:
[% FOREACH item IN p1.items;
"INSERT INTO products VALUES('" _ item.name _ "', '"; item.link _ "', '"; item.price _ "', '"; item.brand _ "')\n";
END %]
Пример результата:
INSERT INTO products VALUES('Смартфон 6.53'' / 1600x720 / 2 ГБ / 32 ГБ / 5000 мА*ч', 'https://www.wildberries.ru/catalog/13615125/detail.aspx', '8990', 'Xiaomi')
INSERT INTO products VALUES('Смартфон galaxy a52 / 6.5'' / 1080x2400 / Super AMOLED / 4 ГБ / 128 ГБ / 4500 мА*ч', 'https://www.wildberries.ru/catalog/23155682/detail.aspx', '24291', 'Samsung')
INSERT INTO products VALUES('Смартфон 6.53'' / 1600x720 / 2 ГБ / 32 ГБ / 5000 мА*ч', 'https://www.wildberries.ru/catalog/13615126/detail.aspx', '8990', 'Xiaomi')
Дамп результатов в JSON
Формат результата:
[% data = {};
data.query = query;
data.items = [];
FOREACH item IN p1.items;
data.items.push({
link = item.link
name = item.name
price = item.price
});
END;
data.json %]
{
"query": "смартфон",
"items": [
{
"link": "https://www.wildberries.ru/catalog/27379808/detail.aspx",
"name": "Смартфон realme 8 / 6.4'' / 2400x1080 / Super AMOLED / 6 ГБ / 128 ГБ / 5000 mAh",
"price": 19911
},
{
"link": "https://www.wildberries.ru/catalog/16023994/detail.aspx",
"name": "Смартфон iPhone 11 128GB / 6.1'' / 1792x828 / Liquid Retina HD / 128 ГБ",
"price": 54990
},
{
"link": "https://www.wildberries.ru/catalog/15875669/detail.aspx",
"name": "Смартфон iPhone 12 128GB / 6.1'' / 2532x1170 / OLED / 128 ГБ",
"price": 69990
},
...
]
}
Вывод результата с датой парсинга
Выведем результат с проставлением дат парсинга
Формат результата:
[% USE d = date(format = '%Y %m %d %H:%M', locale = 'C');
FOREACH item IN p1.items;
tools.CSVline(d.format(), item.name, item.price, item.link);
END %]
Пример результата:
"2022 01 26 10:15","Смартфон 6.53'' / 1600x720 / 2 ГБ / 32 ГБ / 5000 мА*ч",8990,https://www.wildberries.ru/catalog/13615126/detail.aspx
"2022 01 26 10:15","Смартфон iPhone 13 128GB / 6.1'' / 2532x1170 / OLED / 128 ГБ",74390,https://www.wildberries.ru/catalog/40640907/detail.aspx
"2022 01 26 10:15","Смартфон Galaxy S21 256GB / 6.2'' / Dynamic AMOLED / 8 ГБ / 256 ГБ / 4000 мА*ч",64791,https://www.wildberries.ru/catalog/18592983/detail.aspx
"2022 01 26 10:15","Смартфон Galaxy M22 / 6.4'' / 720x1600 / Super AMOLED / 4 ГБ / 128 ГБ / 5000 мAh",17280,https://www.wildberries.ru/catalog/41501725/detail.aspx
Возможные настройки
Параметр | Значение по умолчанию | Описание |
---|---|---|
Pages count | 5 | Количество страниц для парсинга |
Sort by | Popularity | Сортировка результатов |
Address | - | Адрес пункта выдачи |
Longitude | - | Долгота пункта выдачи |
Latitude | - | Широта пункта выдачи |
По-умолчанию Wildberries отображает результаты для Москвы. В парсере есть возможность задать пункт выдачи и список результатов будет привязан к конкретной локации. Чтобы это сделать, нужно переопределить 3 параметра: Address, Longitude и Latitude. Получить необходимые значения для этих параметров можно в браузере:
1. Выбираем нужный пункт выдачи, предварительно открыв Инструменты разработчика (в Chrome клавиша F12)
2. В Инструментах разработчика на вкладке Сеть ищем запрос saveprefereduserloc и в теле запроса видим нужные данные
3. Копируем их в точности в настройки парсера