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
Max concurrent browser pages10Quantas páginas do Chrome o scraper pode abrir simultaneamente. Com um grande número de threads
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", procure pela consulta show e copie 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 solicitação show, na resposta (Preview) copie address, coordinates para os campos Address, Latitude e Longitude do scraper, respectivamente.

img