Crawler
O que é?
O Crawler de Marketplace é um serviço criado para monitorar os preços em vários canais online onde a Sallve vende seus produtos. O objetivo desse monitoramento é desenvolver estratégias promocionais multicanal mais eficientes.
Canais
- Amazon
- Drogaraia
- Drogasil
- Venancio
- Mercado Livre
- Época Cosmétidos
- Drogaria Sao Paulo
- Panvel*
Como funciona?
Esse serviço é composto por dois principais elementos: uma função lambda na AWS e uma planilha com o histórico dos dados.
A função lambda é responsável por extrair informações de uma URL com base em um seletor. Essa lambda foi criada para ser chamada por um app script na planilha, permitindo acessar as páginas de e-commerce que, de outra forma, teriam o acesso bloqueado pelo app script.
Bibliotecas utilizadas: cheerio e axios.
Formas de utilização
Existem 3 formas de pegar o valor de uma página:
- Body Selector
- Meta Campo
- JSON LD
Objeto da requisição:
url: string;
host: string;
type: "meta" | "content" | "ldjson";
prop: string;
selector: string;
O host deve ser o mesmo o corpo principal da url, ex:. url: https://test.com.br/product/123, host: test.com.br
Caso seja optado pelo type: content, deve-se passar o selector apenas
Caso seja optado pelo type: meta, deve-se passar o selector e a prop a ser extraída desse meta campo
Caso seja optado pelo type: ldjson, deve-se passar o selector e a prop, que é o
caminho dentro do objeto até o valor esperado. Ex.: Se o json for: {"test": { "price": 123 }, o prop deve ser "test.price"
O código pode ser encontrado neste link e o endpoint é https://crawler.services.sallve.dev/prod/{env}
Caso Panvel
A panvel é um caso separado, pois o site desta farmácia não tem seu conteúdo renderizado no server side, além disso as chamadas de API são bloqueadas. Desta forma, para que seja possível extrair os valores do site foi necessário utilizar uma ferramenta chamada Scraping Ant.
Há 2 motivos pela escolha da ferramenta. O primeiro é custo, pois esta possui um free tier bastante interessante e para um único caso de e-commerce, atendia bem. O segundo motivo é uma API onde conseguimos fazer suas chamadas pelo próprio App Script, pois não se queria criar uma lambda "somente" para isso.
Havia outras alternativa para ao Scraping Ant, como por exemplo, subir uma máquina/container com alguma biblioteca estilo puppeteer ou mesmo tentar subir o puppeteer com o chromium no lambda, entretanto tais abordagens poderiam sair muito custosas ou não terem o resultado esperado.
A planilha de preços foi pensada para facilitar a visulização dos preços coletados para o time de marketplaces. Ele possui um app script atrelado que consome o serviço da lambda e cria um histórico de preços dos produtos, que são coletados diariamente.