Blog

Postado em em 4 de setembro de 2021

Série Automação Web Aula4 – Incluindo Novas Lojas na Busca de Preços

Essa é a Série Automação Web Aula4 onde vamos incluir mais lojas na nossa busca de preços para que possamos fazer a comparação deles!

Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo!

Para receber por e-mail o(s) arquivo(s) utilizados na aula, preencha:

Essa é a quarta aula da Série Automação Web em VBA e nessa aula nós vamos pegar os preços das outras lojas e vamos tratar essas informações para obter o menor valor entre eles.

No web scraping VBA da aula de hoje nós vamos:

  • substituir informações no VBA (com a função replace no VBA) para remover o R$ do preço, porque ele já vem no formato de texto e não número
  • converter para Double no VBA, pois como as informações foram obtidas no formato de texto, nós não conseguimos fazer operações com texto, então precisamos converter em número
  • descobrir o mínimo no VBA dessas 3 informações

Essa é uma aula bem importante para que você também aprenda a resolver certos tipos de problemas, pois nem sempre o código vai rodar de primeira ou você vai saber logo de cara qual é o problema.

Sub ComparadorDePreco()

Set objIE = CreateObject("InternetExplorer.Application")

objIE.Visible = True

'Buscando o preço na Amazon
objIE.Navigate "https://www.amazon.com.br/Fritadeira-sem-%C3%93leo-Mondial-AF-30I/dp/B07WFHZQ2T/ref=sr_1_1"

precoProdutoAm = CDbl(Replace(objIE.document.getElementById("priceblock_ourprice").innerText, "R$ ", ""))


'Buscando o preço nas Lojas Americanas
objIE.Navigate "https://www.americanas.com.br/produto/204662938"

precoProdutoLA = CDbl(Replace(objIE.document.getElementsByClassName("src__BestPrice-sc-1jvw02c-5 cBWOIB priceSales")(0).innerText, "R$ ", ""))


'Buscando o preço na Magazine Luiza
objIE.Navigate "https://www.magazineluiza.com.br/fritadeira-eletrica-sem-oleo-air-fryer-mondial-family-iv-af-30i-preta-35l-com-timer/p/023386000/ep/frel/"

precoProdutoML = CDbl(objIE.document.getElementsByClassName("price-template__text")(0).innerText)


menorPreco = WorksheetFunction.Min(precoProdutoAm, precoProdutoLA, precoProdutoML)

objIE.Quit

Set objIE = Nothing

End Sub

Explicação do código acima (ComparadorDePreco):

  • Vamos “setar” uma variável chamada “objIE” que representará o objeto do programa do Internet Explorer em si, que vai ser criado no começo
  • Vamos fazer com que o objIE fique visível, para que possamos ver o resultado do código nele, colocando sua propriedade Visible como True
  • Enfim vamos fazer o Internet Explorer de fato ir até a página (método Navigate) informada pelo link que será representado pelo link do produto como texto. Ele será responsável por entrarmos nesse site específico e buscar o valor do produto daquela página, que primeiramente representa o produto na loja da Amazon
  • Vamos armazenar na variável precoProdutoAm o texto interno obtido do elemento de ID “priceblock_ourprice” da página acessada (através do link do produto da Amazon) pelo Internet Explorer (objIE)
  • Repare que usamos uma função para converter para número, a função CDbl (converter para Double no VBA), porque para essa variável é retornado um texto por padrão. Além disso, tivemos que substituir informações no VBA: “R$ “ por “” (nada), através da função Replace no VBA.
  • Em seguida vamos navegar para o site do produto nas Lojas Americanas, e repetir o processo descrito acima, e armazenaremos o valor na variável precoProdutoLA.
  • Apenas se atente ao fato de que no caso das Lojas Americanas, o produto é acessado pela sua classe “src__BestPrice-sc-1jvw02c-5 cBWOIB priceSales” (ByClassName), e ele é o primeiro elemento da classe: correspondência 0.
  • Em seguida vamos navegar para o site do produto na loja Magazinie Luiza, e repetir o processo descrito acima, e armazenaremos o valor na variável precoProdutoML, com a exceção da função de tirar o “R$ “, porque nesse caso o número vem como texto, sem o “R$”.
  • Apenas se atente ao fato de que no caso das Lojas Americanas, o produto é acessado pela sua classe ” price-template__text” (ByClassName), e ele é o primeiro elemento da classe: correspondência 0.
  • Tendo então os três valores buscados em cada loja, vamos fazer a comparação de qual é o menor valor entre eles, usando a função MÍNIMO (Min). O menor valor será armazenado na variável “menorPreco”
  • Em seguida aplicaremos o método Quit na variável que representa o Internet Explorer (objIE) para que ele seja fechado
  • Por boas práticas vamos esvaziar a variável “objIE” (Nothing) para que ela não fique armazenada o tempo inteiro na memória do computador enquanto o arquivo está aberto no Excel
  • Se encerra o código

Conclusão da Série Automação Web Aula4

Para essa automação web no VBA de hoje nós vimos que tivemos que fazer alguns tratamentos, pois as informações nem sempre são coletadas da maneira que precisamos.

Vimos como:

  • substituir informações no VBA para remover o R$ do preço, porque ele já vem no formato de texto por padrão
  • converter para decimal no VBA
  • como descobrir o mínimo no VBA dessas 3 informações, tivemos que usar função do Excel no VBA

Até o próximo episódio da série! Fique ligado no nosso canal do Youtube para mais conteúdo de VBA toda semana! Abraço, pessoal!

Hashtag Treinamentos

Para acessar outras publicações de VBA, clique aqui!


Quer aprender mais sobre VBA com um Minicurso Gratuito?


Quer aprender a construir um Dashboard do Zero e também tudo que você precisa para passar em uma Prova de Excel? Participe da Jornada do Excel!