| Extrair dados de uma página do IE | |
|
|
Autor | Mensagem |
---|
marvinmv
Mensagens : 6 Data de inscrição : 04/05/2013
| Assunto: Extrair dados de uma página do IE Sáb maio 04, 2013 1:00 am | |
| Olá pessoal, é a minha primeira vez no fórum e pelo que vi vocês são bem presentes, isso é bem legal. eu gostaria de uma ajuda dos veteranos no VBA do Excel. No momento surgiu uma necessidade de extrair alguns dados de um site e estou tendo dificuldade com a biblioteca do Internet Explorer. Devido ao primeiro contato com a biblioteca estou perdido entre que classes usar, etc! então vou mostrar o que exatamente eu gostaria de extrair. Qualquer coisa podem me corrigir, eu posso estar seguindo o caminho errado. --------------------------------------------------------------------------------------- usando a ferramenta do desenvolvedor, em Properties:
>properties >html >children:HtmlCollection[2] >1:frameset >ChildNodes:NodeList[5] >3:frame#frmMain >ContentDocument:document >All:HtmlAllCollection[114] >[0...99] >21:td >innertext >22: >innertext ... ... >55 >innertext
Esse é o caminho dos dados que preciso que estão em innertext, mas não consigo fazer referência a esses textos. Se alguém souber como fazer esses links e jogar para uma célula da planilha me expliquem por favor.
Obrigado desde já!! Abraço.
| |
|
| |
alexandrevba
Mensagens : 1820 Data de inscrição : 13/07/2011 Localização : Serra - ES
| Assunto: Re: Extrair dados de uma página do IE Sáb maio 04, 2013 3:12 am | |
| Boa noite!!
Veja se ajuda: http://vbcity.com/forums/t/126217.aspx
Att | |
|
| |
marvinmv
Mensagens : 6 Data de inscrição : 04/05/2013
| Assunto: Re: Extrair dados de uma página do IE Sáb maio 04, 2013 8:45 pm | |
| AlexandreVBA
obrigado pela resposta! Vou aplicar esses códigos no meu problema e segunda retorno com o resultado. Pelo que entendi ele extrai tudo da pagina, eu só queria certos valores mas se eu conseguir por um próximo tratamento retira-los já poderia me adiantar demais.
| |
|
| |
alexandrevba
Mensagens : 1820 Data de inscrição : 13/07/2011 Localização : Serra - ES
| Assunto: Re: Extrair dados de uma página do IE Sáb maio 04, 2013 10:16 pm | |
| Boa tarde!! Veja esse modelo que encontrei ao pesquisar, talvez possa ajudar. - Código:
-
Sub Vai_Tentando_Ai() Dim lnk As Object, ie As Object, doc As Object, i As Long Set ie = CreateObject("InternetExplorer.Application") With ie .Visible = True .Navigate "http://suggestadoctor.com/doctors_list_al_310_alabama_urology.htm" Do Until .readyState = 4: DoEvents: Loop Set doc = ie.document For Each lnk In doc.Links i = i + 1 Range("A" & i) = lnk.innerText Range("B" & i) = lnk Next lnk End With End Sub | |
|
| |
marvinmv
Mensagens : 6 Data de inscrição : 04/05/2013
| Assunto: Re: Extrair dados de uma página do IE Seg maio 06, 2013 6:27 pm | |
| AlexandreVBA, Consegui, com sua ajuda, transferir os textos de um site para o excel, porém ele passou o texto todo para uma unica célula. Eu sei aonde está o erro mas não sei como chegar na solução ótima. No meu exemplo:
Set htm = ie.document Set oHTMLBod = htm.body 'aqui eu seleciono toda a pagina, porém eu gostaria de quebrar os textos em diferentes células Range("A" & i) = oHTMLBod.innerText
acho que seria só uma referência, em vez de .body algo como um .body.(?) ! Como estou começando agora com este tipo de extração é tudo muito novo e tenho muitas dúvidas, então se puder me auxiliar novamente, ficaria muito grato. qualquer novidade eu volto a postar. obrigado.
| |
|
| |
marvinmv
Mensagens : 6 Data de inscrição : 04/05/2013
| Assunto: Re: Extrair dados de uma página do IE Seg maio 06, 2013 10:55 pm | |
| Alexandrevba, sabendo que tenho uma tabela onde estão esses dados desejados, como faço a referência para suas linhas e colunas? Eu tentei com este comando, mas não deu certo aqui: "variável do objeto ou a variável do bloco 'with' não foi definida" - Código:
-
With htm.getElementsByTagName("Table")(2) Sheets(1).Cells(1, 1).Value = .Cells(1).outerText Sheets(1).Cells(2, 1).Value = .Cells(2).outerText End With acho que por esse caminho eu vou fragmentar o texto para um melhor tratamento. | |
|
| |
alexandrevba
Mensagens : 1820 Data de inscrição : 13/07/2011 Localização : Serra - ES
| Assunto: Re: Extrair dados de uma página do IE Ter maio 07, 2013 3:26 am | |
| Boa noite!!
Tem como você mandar seu arquivo, deposite seu arquivo em site gratuito como sendspace e nos mande o link.
Att | |
|
| |
marvinmv
Mensagens : 6 Data de inscrição : 04/05/2013
| Assunto: Re: Extrair dados de uma página do IE Ter maio 07, 2013 5:39 pm | |
| Eu não posso mandar o site por segurança, mas esse é meu código. - Código:
-
Dim oHTMLDoc As Object Dim oHTMLBod As Object Dim lnk As Object, IE As Object Dim objIE As SHDocVw.InternetExplorer 'microsoft internet controls (shdocvw.dll) Dim htmlInput As MSHTML.HTMLInputElement Consulta = "SITE.asp" Set objIE = New SHDocVw.InternetExplorer
Set IE = CreateObject("InternetExplorer.Application") IE.Visible = True
Dim Url As String Url = "SITE.br/" IE.Navigate Url Do While IE.readyState <> 4 DoEvents Loop Set htm = IE.document Do Set frms = htm.forms(0) If Not frms Is Nothing Then Exit Do Loop For i = 1 To frms.Length Set frm = frms(i - 1) Cells(i, 1) = frm.Name Next i frms("Tx_Login").Value = "Login" frms("Tx_Senha").Value = "Senha" SendKeys "{ENTER}", True Do Until .readyState = 4: DoEvents: Loop
With IE .Visible = True .Navigate "SITE.asp" Do Until .readyState = 4: DoEvents: Loop End With
Set oHTMLDoc = IE.document With htm.getElementsByTagName("Table")(2) Sheets(1).Cells(1, 1).Value = .Cells(1).outerText Sheets(1).Cells(2, 1).Value = .Cells(2).outerText End With
'Este último with não executa.
Abaixo esta o código da tabela desejada da pagina. Eu acho que fiz uma referência errada a esta tabela. - Código:
-
<table border="0" width="760" style="margin: 0px;"> <tbody><tr> <td colspan="3" align="center" style="padding:10px;"> <span class="titulo">djaskdjsakldjsakl</span> </td> </tr> <tr> <td rowspan="2" bgcolor="yellow" align="center" style="font-family: verdana; font-size: 7pt; font-weight: bold;">xxxx %</td> <td class="dado">Valor orçamentário de diárias: R$ xxxxx</td> <td> </td> </tr> <tr> <td class="dado">Valor executado de diárias : R$ xxxxxx</td> <td class="dado" style="color:#0000FF;">Saldo: R$ xxxxxx</td> </tr> <tr> <td colspan="3"> </td> </tr>
<tr> <td rowspan="2" bgcolor="MediumSeaGreen" align="center" style="font-family: verdana; font-size: 7pt; font-weight: bold; padding: 3px;">xxxx %</td> <td class="dado">Valor orçamentário : R$ xxxxx</td> <td> </td> </tr> <tr> <td class="dado">Valor executado de diárias : R$ xxxxx</td> <td class="dado" style="color:#0000FF;">Saldo: R$ xxxx</td> </tr> <tr> <td colspan="3"> </td> </tr> <tr> <td rowspan="2" bgcolor="MediumSeaGreen" align="center" style="font-family: verdana; font-size: 7pt; font-weight: bold;">xxxx %</td> <td class="dado">Valor orçamentário: R$ xxxxx</td> <td> </td> </tr> <tr> <td class="dado">Valor executado: R$ xxxxx</td> <td class="dado" style="color:#0000FF;">Saldo: R$ xxxxx</td> </tr> <tr> <td colspan="3"> </td> </tr> <tr> <td rowspan="2" bgcolor="yellow" align="center" style="font-family: verdana; font-size: 7pt; font-weight: bold;">xxx%</td> <td class="dado">Valor orçamentário: R$ xxxxxx</td> <td> </td> </tr> <tr> <td class="dado">Valor executado: R$ xxxxx</td> <td class="dado" style="color:#0000FF;">Saldo: R$ xxxxx</td> </tr> <tr> <td colspan="3"> </td> </tr> </tbody></table>
agradeço todo seu esforço em me ajudar Alexandrevba, muito obrigado mesmo. | |
|
| |
marvinmv
Mensagens : 6 Data de inscrição : 04/05/2013
| Assunto: Re: Extrair dados de uma página do IE Ter maio 07, 2013 9:07 pm | |
| Alexandrevba, consegui extrair elementos da <TABLE> desta forma: (acabou sendo uma solução simples hehe) - Código:
-
Set tabela = IE.document.getElementsByTagName("Table") Sheets(2).Cells(2, 1).Value = tabela(1).Rows(1).Cells(0).innerText Sheets(2).Cells(2, 2).Value = tabela(1).Rows(1).Cells(1).innerText Agora o tratamento é mais tranquilo!! A parte difícil acabou. rsrs Mas acho que vou continuar fuçando esta biblioteca porque achei muito interessante manipular o IE. tem muitas coisas que já tenho em mente. Muito obrigado alexandrevba pelo suporte. Você foi de grande ajuda. Sucesso em seus projetos. abraços! | |
|
| |
alexandrevba
Mensagens : 1820 Data de inscrição : 13/07/2011 Localização : Serra - ES
| Assunto: Re: Extrair dados de uma página do IE Qua maio 08, 2013 2:09 am | |
| Boa noite!!!
Se você conseguiu resolver eu fico feliz!!!
Até a próxima.
Att | |
|
| |
Conteúdo patrocinado
| Assunto: Re: Extrair dados de uma página do IE | |
| |
|
| |
| Extrair dados de uma página do IE | |
|