Usuário com melhor resposta
Código no VBA para extrair dados de uma página na Web

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
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
- Editado Mr. GMSOFT terça-feira, 4 de novembro de 2014 17:59
- Sugerido como Resposta Mr. GMSOFT terça-feira, 4 de novembro de 2014 17:59
- Marcado como Resposta Felipe Costa GualbertoMVP, Moderator sábado, 15 de novembro de 2014 10:52
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.- Inicie o Visual Studio .NET ou Visual Studio 2005.
- No menu arquivo , aponte para novo e, em seguida, clique em Project .
- 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 . - 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 . - Na guia .NET Framework Components , clique em WebClient e, em seguida, clique em OK .
- Adicione um controle de WebClient ao Form1.
- Adicione um controle de botão ao Form1.
- 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
- No menu Build , clique em Build Solution .
- No menu Debug , clique em Iniciar .
- Clique em Button1 .
- Localize o arquivo TestPage.htm na unidade C. botão direito no arquivo e, em seguida, clique em Abrir .
-
@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
-
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
- Editado Mr. GMSOFT terça-feira, 4 de novembro de 2014 17:59
- Sugerido como Resposta Mr. GMSOFT terça-feira, 4 de novembro de 2014 17:59
- Marcado como Resposta Felipe Costa GualbertoMVP, Moderator sábado, 15 de novembro de 2014 10:52