Shop::Wildberries::ProductsList - scraper de lista de produtos Wildberries

Visão geral do scraper
Ao utilizar o scraper de produtos Wildberries, você pode obter dados sobre produtos a partir dos resultados de busca por palavra-chave ou de uma lista de produtos de uma categoria ou marca específica. Com ele, é possível coletar uma base de links de produtos, monitorar a dinâmica de preços, alterações no número de avaliações ou classificação, coletar imagens de produtos ou informações sobre cores e tamanhos disponíveis. Além disso, uma lista de anúncios publicitários é coletada separadamente, indicando a posição de cada um na busca orgânica. O scraper oferece a possibilidade de definir a ordenação dos resultados e especificar o ponto de retirada.
A funcionalidade do A-Parser permite salvar as configurações de extração de dados para uso futuro (presets), definir agendamentos de extração de dados e muito mais. Você pode usar a multiplicação automática de consultas, substituição de subconsultas a partir de arquivos, combinação de caracteres alfanuméricos e listas para obter o máximo possível de resultados.
Dados coletados

- Quantidade de produtos
- Nome do produto
- Link do produto
- Imagem do produto
- Marca
- Preço e preço antigo
- Classificação e número de avaliações
- Tamanhos e/ou cores
- Para anúncios publicitários - posição na lista de produtos
- Lista de chaves de "Também procuram" e "Você também pode gostar"
Casos de uso
- Coleta de links de produtos
- Avaliação da popularidade de produtos
- Monitoramento da dinâmica de preços e popularidade de produtos
- Coleta de um conjunto de imagens de produtos
- Determinação de posições de anúncios publicitários
Consultas
Como consultas, você pode utilizar:
Links para a lista de produtos de uma marca, por exemplo:
https://www.wildberries.ru/brands/kristiano-fashion
https://www.wildberries.ru/brands/s-a-s
Links para a lista de produtos em uma categoria, por exemplo:
https://www.wildberries.ru/catalog/elektronika/razvlecheniya-i-gadzhety/igrovye-konsoli/playstation
https://www.wildberries.ru/catalog/avtotovary/shiny-i-diski/shiny
Palavras-chave, exatamente como se você as estivesse digitando diretamente no campo de busca do Wildberries, por exemplo:
xiaomi mi10
camisetas e regatas
rádio automotivo
Substituições de consultas
Ao utilizar palavras-chave como consultas, você pode usar macros integradas para multiplicar as consultas, por exemplo, se for necessário obter mais resultados do que a busca comum fornece.
Por exemplo, para as palavras-chave listadas acima, no formato de consulta, indicaremos a alternância de caracteres de a até zzzz; este método permite rotacionar ao máximo os resultados de busca e obter muitos novos resultados únicos:
$query {az:a:zzzz}
Esta macro criará 475254 consultas adicionais para cada consulta de busca inicial, o que totalizará 4 x 475254 = 1901016 consultas de busca; um número impressionante, mas isso não é problema para o A-Parser. Com uma velocidade de 2000 consultas por minuto, tal tarefa será processada em apenas 16 horas.
Opções de exibição de resultados
O A-Parser suporta formatação flexível de resultados graças ao motor de modelos integrado Template Toolkit, o que permite exibir resultados em formato livre, bem como estruturado, como CSV ou JSON.
Exibição de marca, nome e preço
Formato do resultado:
$items.format('$brand, $name, $price\n')
Exemplo de resultado:
Xiaomi, Smartphone Poco X3 Pro / 6.67'' / 2400x1080 / IPS / 8 GB / 256 GB / 5160 mAh, 23751
Realme, Smartphone realme 8 / 6.4'' / 2400x1080 / Super AMOLED / 6 GB / 128 GB / 5000 mAh, 19911
Apple, Smartphone iPhone 11 128GB / 6.1'' / 1792x828 / Liquid Retina HD / 128 GB, 54990
Apple, Smartphone iPhone 12 128GB / 6.1'' / 2532x1170 / OLED / 128 GB, 69990
Samsung, Smartphone Galaxy A32 / 6.4'' / 2400x1080 / Super AMOLED / 4 GB / 128 GB / 5000 mAh, 19791
Exibição com nomes de variáveis
Formato do resultado:
$items.format('Marca: $brand, Nome: $name, Preço: $price\n')
Exemplo de resultado:
Marca: Samsung, Nome: Smartphone Galaxy A32 / 6.4'' / 2400x1080 / Super AMOLED / 4 GB / 128 GB / 5000 mAh, Preço: 19791
Marca: Realme, Nome: Smartphone realme 8 / 6.4'' / 2400x1080 / Super AMOLED / 6 GB / 128 GB / 5000 mAh, Preço: 19911
Marca: Honor, Nome: Smartphone Honor 50 / 6.57'' / 2340x1080 / OLED / 6 GB / 128 GB / 4300 mAh, Preço: 31490
Marca: Apple, Nome: Smartphone iPhone 13 256GB / 6.1'' / 2532x1170 / OLED / 256 GB, Preço: 89990
Marca: Xiaomi, Nome: Smartphone 6.53'' / 1600x720 / 2 GB / 32 GB / 5000 mAh, Preço: 8990
Exibição do resultado com data de extração em tabela CSV
Formato do resultado:
[% USE d = date(format = '%Y %m %d %H:%M', locale = 'C');
FOREACH item IN items;
tools.CSVline(d.format(), item.name, item.price, item.link);
END %]
Exemplo de resultado:
"2022 01 26 10:15","Smartphone 6.53'' / 1600x720 / 2 GB / 32 GB / 5000 mAh*h",8990,https://www.wildberries.ru/catalog/13615126/detail.aspx
"2022 01 26 10:15","Smartphone iPhone 13 128GB / 6.1'' / 2532x1170 / OLED / 128 GB",74390,https://www.wildberries.ru/catalog/40640907/detail.aspx
"2022 01 26 10:15","Smartphone Galaxy S21 256GB / 6.2'' / Dynamic AMOLED / 8 GB / 256 GB / 4000 mAh*h",64791,https://www.wildberries.ru/catalog/18592983/detail.aspx
"2022 01 26 10:15","Smartphone Galaxy M22 / 6.4'' / 720x1600 / Super AMOLED / 4 GB / 128 GB / 5000 mAh*h",17280,https://www.wildberries.ru/catalog/41501725/detail.aspx
Exibição de nome, preço e porcentagem de desconto do produto em tabela CSV
Formato do resultado:
[% USE Math;
FOREACH item IN items;
discount = item.oldPrice ? (item.oldPrice - item.price) / item.oldPrice * 100 : 0;
tools.CSVline(item.name, item.price, Math.int(discount + 0.5) _ '%');
END %]
Exemplo de resultado:
"Smartphone Poco X3 Pro / 6.67'' / 2400x1080 / IPS / 8 GB / 256 GB / 5160 mAh*h",23751,12%
"Smartphone realme 8 / 6.4'' / 2400x1080 / Super AMOLED / 6 GB / 128 GB / 5000 mAh",19911,17%
"Smartphone iPhone 12 128GB / 6.1'' / 2532x1170 / OLED / 128 GB",69990,0%
"Smartphone Galaxy A32 / 6.4'' / 2400x1080 / Super AMOLED / 4 GB / 128 GB / 5000 mAh",19791,10%
"Smartphone galaxy a52 / 6.5'' / 1080x2400 / Super AMOLED / 8 GB / 256 GB / 4500 mAh*h",28691,18%
Exibição em tabela CSV
Formato do resultado:
[% FOREACH item IN items;
tools.CSVline(item.link, item.name, item.price, item.oldPrice, item.rating, item.reviews);
END %]
Texto inicial:
Link do produto, Nome do produto, Preço, Preço antigo, Classificação, Quantidade de avaliações
Exemplo de resultado:
Link do produto, Nome do produto, Preço, Preço antigo, Classificação, Quantidade de avaliações
https://www.wildberries.ru/catalog/54067214/detail.aspx,"Gorro beanie feminino",703,1900,5,6
https://www.wildberries.ru/catalog/41415461/detail.aspx,"Gorro beanie feminino / beanie com dobra / Beanie",1487,1750,5,346
https://www.wildberries.ru/catalog/16782596/detail.aspx,"Gorro beanie feminino / beanie com dobra / Beanie",1487,1750,5,346
https://www.wildberries.ru/catalog/9468600/detail.aspx,"Gorro com cachecol / com luvas / beanie feminino",2700,4500,5,137
https://www.wildberries.ru/catalog/4750212/detail.aspx,"Boina",765,1075,5,349
https://www.wildberries.ru/catalog/9793364/detail.aspx,"Boina com cachecol",3297,4710,5,307
Salvamento em formato SQL
Formato do resultado:
[% FOREACH item IN items;
"INSERT INTO products VALUES('" _ item.name _ "', '"; item.link _ "', '"; item.price _ "', '"; item.brand _ "')\n";
END %]
Exemplo de resultado:
INSERT INTO products VALUES('Smartphone 6.53'' / 1600x720 / 2 GB / 32 GB / 5000 mAh*h', 'https://www.wildberries.ru/catalog/13615125/detail.aspx', '8990', 'Xiaomi')
INSERT INTO products VALUES('Smartphone galaxy a52 / 6.5'' / 1080x2400 / Super AMOLED / 4 GB / 128 GB / 4500 mAh*h', 'https://www.wildberries.ru/catalog/23155682/detail.aspx', '24291', 'Samsung')
INSERT INTO products VALUES('Smartphone 6.53'' / 1600x720 / 2 GB / 32 GB / 5000 mAh*h', 'https://www.wildberries.ru/catalog/13615126/detail.aspx', '8990', 'Xiaomi')
Dump de resultados em JSON
Formato geral do resultado:
[% IF notFirst;
",\n";
ELSE;
notFirst = 1;
END;
obj = {};
obj.query = query;
obj.items = [];
FOREACH item IN p1.items;
obj.items.push({
link = item.link
name = item.name
price = item.price
});
END;
obj.json %]
Texto inicial:
[
Texto final:
]
Exemplo de resultado:
[
{
"query": "smartphone",
"items": [
{
"link": "https://www.wildberries.ru/catalog/27379808/detail.aspx",
"name": "Smartphone realme 8 / 6.4'' / 2400x1080 / Super AMOLED / 6 GB / 128 GB / 5000 mAh",
"price": 19911
},
{
"link": "https://www.wildberries.ru/catalog/16023994/detail.aspx",
"name": "Smartphone iPhone 11 128GB / 6.1'' / 1792x828 / Liquid Retina HD / 128 GB",
"price": 54990
},
{
"link": "https://www.wildberries.ru/catalog/15875669/detail.aspx",
"name": "Smartphone iPhone 12 128GB / 6.1'' / 2532x1170 / OLED / 128 GB",
"price": 69990
},
...
]
},
...
]
Para que as opções "Prepend text" e "Append text" estejam disponíveis no Editor de Tarefas, é necessário ativar "More options".
Configurações possíveis
| Parâmetro | Valor padrão | Descrição |
|---|---|---|
| Pages count | 5 | Quantidade de páginas para extração de dados |
| Sort by | Popularity | Ordenação dos resultados |
| Address | Endereço do ponto de retirada | |
| Longitude | Longitude do ponto de retirada | |
| Latitude | Latitude do ponto de retirada |
Por padrão, o Wildberries exibe resultados para Moscou. No scraper, há a possibilidade de definir um ponto de retirada e a lista de resultados será vinculada a uma localização específica. Para fazer isso, é necessário redefinir 3 parâmetros: Address, Longitude e Latitude. Você pode obter os valores necessários para esses parâmetros no navegador:
1. Escolhemos o ponto de retirada desejado, após abrir as Ferramentas do Desenvolvedor (no Chrome, tecla F12)

2. Na aba «Rede» procuramos a consulta create?version=1 e copiamos os dados para as configurações do scraper
Após selecionar o ponto de retirada, abra a aba Rede (no Chrome em inglês — Network). Encontre a consulta create?version=1, na resposta (Preview) copie address, lat e lon para os campos Address, Latitude e Longitude do scraper, respectivamente.
