none
Código no VBA para extrair dados de uma página na Web RRS feed

  • Pergunta

  • Pessoal,

    Estou com um problema que esta complicado de resolver. Estou fazendo um trabalho, onde é necessário extrair dados de uma página e lista-los em uma planilha

    Escolhi extrair a lista de médicos do site do cremesp http://www.cremesp.org.br

    Acredito que é preciso fazer uma macro, onde busque os dados, cole no Excel, mude para a página seguinte, busque os dados e assim por diante até a última página

    Mas como o meu nível de VBA ainda é baixo, precisarei da ajuda de vocês. Se alguém puder me ajudar ficarei muito grato, pois essa pesquisa engloba mais de 6000 médicos, é impossível fazer isto manualmente.


    Abraço!

    Robson

    terça-feira, 4 de novembro de 2014 16:15

Respostas

  • Aqui nesse link o acesso é sem o captcha:

    https://www.cremesp.org.br/?siteAcao=AreaDoMedico&cod_crm=scaptcha

    Qual o conhecimento que você possui, sabe utilizar instancia do IE para acessar o site?

    Aqui uma base para o que vai precisar para acessar o link acima:

    Sub FazerLoginSite() Dim IE As Object Set IE = CreateObject(“InternetExplorer.application”) With IE .Visible = True ‘aqui vai o link que vai injetar a pesquisa para acessar os dados .Navigate (“https://www.cremesp.org.br/?siteAcao=AreaDoMedico&cod_crm=scaptcha“) While .Busy Or .ReadyState <> 4: DoEvents: Wend .Document.getElementById("inner-editor").Focus .Document.getElementById("inner-editor").Value = “COLOQUE O CRM“

    'Coloque os demais campos no site .Document.getElementById(“Ver qual ID do Password no html“).Focus .Document.getElementById(“Ver qual ID do Password no html“).Value = “COLOQUE SUA SENHA AQUI“ .Document.All(“Verificar qual ID do Botão “).Click While .Busy Or .ReadyState <> 4: DoEvents: Wend Debug.Print .LocationURL End With End Sub






    terça-feira, 4 de novembro de 2014 17:45

Todas as Respostas

  • O primeiro problema que ví é que o site possui captcha. Logo isso será um problema para você automatizar o download. Minha sugestão é que você verifique se existe algum web service deles para consulta de médicos.

    https://support.microsoft.com/kb/821771?wa=wsignin1.0

    Use a classe WebClient para baixar um arquivo da Web

    Este exemplo passo a passo descreve como baixar um arquivo de um site da Web em seu computador local.
    1. Inicie o Visual Studio .NET ou Visual Studio 2005.
    2. No menu arquivo , aponte para novo e, em seguida, clique em Project .
    3. Na seção Tipos de projeto , clique em Projetos do Visual Basic . Em modelos de seção, clique em Windows Application e, em seguida, clique em OK . Por padrão, é criado o Form1.

      Observação No Visual Studio 2005, clique em Visual Basic em tipos de projeto .
    4. No menu Ferramentas , clique em Customize Toolbox .
      Observação No Visual Studio .NET 2003, clique em Adicionar ou remover Toolbox Items no menu Ferramentas 

      No Visual Studio 2005, clique em Choose Toolbox Items no menu Ferramentas .
    5. Na guia .NET Framework Components , clique em WebClient e, em seguida, clique em OK .
    6. Adicione um controle de WebClient ao Form1.
    7. Adicione um controle de botão ao Form1.
    8. Adicione o seguinte código ao manipulador de eventos Button1_Click .
      'Download the file from the specified URL.
      Try
          WebClient1.DownloadFile("http://www.microsoft.com/default.asp", "c:\TestPage.htm")
          MessageBox.Show("Download Completed.")
      Catch ex As Exception
          MessageBox.Show("Download Failed" & vbCrLf & ex.Message)
      End Try
    9. No menu Build , clique em Build Solution .
    10. No menu Debug , clique em Iniciar .
    11. Clique em Button1 .
    12. Localize o arquivo TestPage.htm na unidade C. botão direito no arquivo e, em seguida, clique em Abrir .
    terça-feira, 4 de novembro de 2014 17:36
  • @Robson,

    Creio que sua tarefa terá que ser manual. Como o Deric disse, o site possui um captcha (aquela caixa de mensagem que pede para você inserir um número e verificar que você não é uma macro).

    @Deric,

    Apenas relembrando: sua sugestão envolve o uso do Visual Studio, e este é um fórum específico de VBA.


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    terça-feira, 4 de novembro de 2014 17:42
    Moderador
  • Aqui nesse link o acesso é sem o captcha:

    https://www.cremesp.org.br/?siteAcao=AreaDoMedico&cod_crm=scaptcha

    Qual o conhecimento que você possui, sabe utilizar instancia do IE para acessar o site?

    Aqui uma base para o que vai precisar para acessar o link acima:

    Sub FazerLoginSite() Dim IE As Object Set IE = CreateObject(“InternetExplorer.application”) With IE .Visible = True ‘aqui vai o link que vai injetar a pesquisa para acessar os dados .Navigate (“https://www.cremesp.org.br/?siteAcao=AreaDoMedico&cod_crm=scaptcha“) While .Busy Or .ReadyState <> 4: DoEvents: Wend .Document.getElementById("inner-editor").Focus .Document.getElementById("inner-editor").Value = “COLOQUE O CRM“

    'Coloque os demais campos no site .Document.getElementById(“Ver qual ID do Password no html“).Focus .Document.getElementById(“Ver qual ID do Password no html“).Value = “COLOQUE SUA SENHA AQUI“ .Document.All(“Verificar qual ID do Botão “).Click While .Busy Or .ReadyState <> 4: DoEvents: Wend Debug.Print .LocationURL End With End Sub






    terça-feira, 4 de novembro de 2014 17:45