• 0
Sign in to follow this  
R0DR1G0_CWB

[Resolvido] Coletar informações da internet via VBA

Question

Olá, estou criando um crawler em vba para manter atualizado certas informações que busco manualmente.

Minha dúvida até que é simples. Estou fazendo o seguinte FOR:

For Each i In IE.Document.body.getElementsByTagName("span")

o i recebe o seguinte valor "[obejct HTMLSpanElement]"

 

Até aqui beleza, mas como na página existe vários "spans" encontrei a dificuldade de identificar o qual preciso.

Página: https://www.ferramentaskennedy.com.br/busca?q=Tcs72Xp16At

 

Com o apoio do Chrome vejo o seguinte:

No código: <span class="valor h6"> R$ 1.598,00 </span>

 

Demais infos:

span.valor.h6

innerText: "R$ 1.598,00"

 

tentei fazer o FOR assim:

For Each i In IE.Document.body.getElementsByTagName("span.valor.h6")

Mas não localiza a informação e pula essa etapa.

 

Tentei também:

For Each i In IE.Document.body.getElementsByTagName("span").getAttributesByClassName("valor h6")

Que gera o erro:

Erro em tempo de execução '438'
O objeto não aceita esta propriedade ou método

 

Outra forma que tentei, também com o erro 438:

For Each i In ie.Document.body.getElementsByTagName("span")
    For Each j In ie.Document.body.getElementsByClassName("valor h6") 
'até aqui esta rodando
          vlr = ie.Document.body.getElementsByClassName("valor h6").innerText 'aqui gera o erro 438 
    Next j

Next i

Obs.: Não sou programador, apenas estou tentando agilizar o meu dia-a-dia.

Já visitei alguns sites/foruns diferentes e não encontro a resposta, agradeço quem puder me ajudar.

Edited by R0DR1G0_CWB

Share this post


Link to post
Share on other sites

1 answer to this question

Recommended Posts

  • 0

Questão resolvida.

 

Para quem passar pela mesma situação eu estava errando na sintaxe da biblioteca utilizada do Microsoft Internet Controls.

 

A forma correta é:

        For Each i In ie.Document.body.getElementsByTagName("span")
          If i.className = "valor h6" Then
            vlr = i.innerText
            Range("C" & cont).Value = vlr
          End If
        Next i

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this