Notifications
Clear all

Puxar dados de um site

6 Posts
3 Usuários
0 Reactions
1,636 Visualizações
(@bru_ce)
Posts: 4
New Member
Topic starter
 

Boa Tarde Amigos, sou iniciante em VBA.
Porém estou criando uma macro que faça o seguinte:

Tenho uma planilha com 1000 telefones, gostaria de fazer uma consulta neste site http://www.qualoperadora.net/ com cada linha da planilha, depois com isto eu pegaria a informação retornada do site e escreveria na coluna ao lado do telefone.

Até agora consegui fazer isto .

Public Sub ExemploBuscaGoogle()
On Error Resume Next
    
    Dim i As Long
    
    Dim IE As Object
    Dim objElement As Object
    Dim objCollection As Object
    
    quebra = Chr(13) & Chr(10)
    
    Dim iArq As Long
    iArq = FreeFile
    Open "C:BrunoTeste.txt" For Output As iArq
    Print #iArq, quebra
    Print #iArq, "texto: simples"
    Close #iArq
        
    
    ' Cria instância do IE
    Set IE = CreateObject("InternetExplorer.Application")
    
    ' Define o endereço a ser carregado
    IE.navigate ("www.qualoperadora.net")
    
    ' Define se a janela do IE será ou não exibida
    IE.Visible = True
    
    ' Espera carregar. A espera aqui está definida para 1 segundo,
    ' mas pode ser ajustada dependendo da necessidade.
    Do While IE.Busy
        Application.Wait DateAdd("s", 1, Now)
    Loop


    ' Busca campos tipo input, uma vez que queremos acessar o campo de busca.
    ' Sabemos que o campo é tipo input porque analisamos o código HTML da página do Google.
    ' O método getElementByTagName retorna todas as TAGs HTML da página carregada com o nome desejado.
    Set objCollection = IE.document.getElementsByTagName("input")
     
    
    ' Varre os inputs do HTML procurando pelos elementos desejados
    ' Queremos encontrar o elemento input com name = "q"
    ' Uso o while aqui mas poderia usar o 'for each'
    i = 0
    While i < objCollection.Length
        
        ' "q" é o nome do campo de busca, como visto no código HTML
        If objCollection(i).Name = "telefone" Then
            
            
                    
            
            
            ' Preenche o campo de busca com o que queremos
            objCollection(i).Value = "11973482468"
        
        End If
        
        i = i + 1
        
    Wend
    
    ' Após preenchermos o campo de pesquisa mandamos um 'enter' para o sistema.
    ' No método SendKeys o 'enter' é representado pelo símbolo ~
    Application.SendKeys ("~")
    

    ' Esperamos novamente o IE carregar a página.
    ' Note que o codigo aqui realiza uma espera de 1 segundo
    ' mesmo sem verificar se o IE está ocupado.
    ' Isso é uma boa estratégia pois diversos sites passam por
    ' mais de uma janela após submeter informações
    ' a um formulário. Então a espera tenta garantir que a janela
    ' final esteja carregada.
    Application.Wait DateAdd("s", 1, Now)
    Do While IE.Busy
        Application.Wait DateAdd("s", 1, Now)
    Loop
    
    
    ' Agora temos que buscar o primeiro link do primeiro resultado.
    ' Novamente temos que analisar o HTML, agora da página de resultados.
    
    
    ' Buscamos as tags 'li' onde class = 'g' da página, pois é onde estão os resultados.
    ' Novamente, sabemos pela análise do HTML.
    Set objCollection2 = IE.document.getElementsByTagName("li")
    
    
    ' Dentre as tags 'li' buscamos a primeira com classe 'g'
    For Each elemento In objCollection2
        
        ' "q" é o nome do campo de busca, como visto no código HTML
        If elemento.classname = "g" Then
        
            ' Mostra a msgbox com o texto do primeiro resultado
            MsgBox elemento.innertext
            
            Exit For
        
        End If
    
    Next
    
    ' Fecha a instância do IE
    

End Sub

 
Postado : 11/07/2014 1:27 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Em quanato isso...
http://www.google.com.br/cse?cx=partner ... 0um%20site

Att

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 11/07/2014 1:36 pm
(@bru_ce)
Posts: 4
New Member
Topic starter
 

Fala Alexandre,
Já cheguei a ver alguns posts parecidos, porém não consegui cara ..

Abs

 
Postado : 11/07/2014 1:44 pm
(@edcronos)
Posts: 1006
Noble Member
 

cada site tem um script diferente
tem que se estudar o funcionamento do script para se criar a instância de pesquisa e aquisição de dados.

o seu pedido não tem uma duvida individual e sim todo um contexto de funcionamento .
do jeito que está implícito o pedido, está mais para a area de oportunidade.

mesmo em um site simples igual a da loteria eu tive que adaptar a macro para os diferentes jogos e isso sendo o mesmo site
imagina algo como site de operadoras e ainda sendo tão diferentes.

tente focar em apenas uma operadora estude o script e tente ir aos poucos
essa não é uma questão simples de se resolver
uma simples busca no site pode pedir um enorme tempo de estudo e testes da macro até se conseguir o funcionamento desejado

mesmo em foruns estrangeiros vc vai ter que ter algo pronto e apenas parte da duvida do todo que vc quer solucionar.

Att.

Somente é impossíveis até que alguém faça
A logica está presa na irracionalidade humana, e morta nos que se consideram donos da verdade.

"ALGUM MODERADOR ME EXPULSE DO FÓRUM POR FAVOR"

 
Postado : 11/07/2014 2:24 pm
(@bru_ce)
Posts: 4
New Member
Topic starter
 

Entendi ... obrigado pela explicação!

 
Postado : 11/07/2014 2:40 pm
(@bru_ce)
Posts: 4
New Member
Topic starter
 

Alexandre, até o momento eu consegui fazer bastante coisa.
Estou com uma dúvida e creio que você posso me ajudar.

Preciso pegar o conteúdo de uma div de uma página do internet explorer.

 
Postado : 11/07/2014 2:45 pm