Pular para o conteúdo principal

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

img

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

img

  • 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

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
},
...
]
},
...
]
dica

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âmetroValor padrãoDescrição
Pages count5Quantidade de páginas para extração de dados
Sort byPopularityOrdenação dos resultados
AddressEndereço do ponto de retirada
LongitudeLongitude do ponto de retirada
LatitudeLatitude do ponto de retirada
nota

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)

img

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.

img