Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Evandro Araujo 2

[Resolvido] [VB6] Ler tags HTML de um controle WebBrowser

Recommended Posts

Olá meus caros colegas do fórum,

 

Venho até vocês mais uma vez pedir encarecidadamente ajuda.

 

Acontece que tenho um formulário e nele tenho um controle webbrowser onde carrego um determinado site.

Preciso "ler" os dados de uma tag e jogá-los num listbox.

 

Seria algo como por exemplo:

Código HTML da página:

<tr class="linhaEscura">
<td class="dados" style="text-align: right;">Evandro Araújo</td>
<td class="dados" style="text-align: right;">Rua 1, Q 3</td>
</tr>

<tr class="linhaEscura">
<td class="dados" style="text-align: right;">Fulano de Tal</td>
<td class="dados" style="text-align: right;">Rua 9, Q 7</td>
</tr>

 

Resultado no ListBox no VB:

Evandro Araújo | Rua 1, Q 3

Fulano de Tal | Rua 9, Q 7

 

Lembrando que a quantidade de "registros" sempre muda.

 

Maiores interações, por favor, perguntem.

 

De já agradeço a colaboração dos amigos.

Muito obrigado.

 

Evandro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já consegue recuperar o HTML?

 

Dos elementos que você vai pegar o "valor", todos tem 'class="dados"' ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já consegue recuperar o HTML?

 

Dos elementos que você vai pegar o "valor", todos tem 'class="dados"' ?

 

Sim Scorpio, eu recupero o HTML para um textbox ou até mesmo para uma string usando o

sPageSourceCode = Me.wbMain.Document.Body.InnerHTML

Quanto à segunda questão, sim; todos possuem a estrutura que eu especifiquei logo a cima. É claro que existem mais códigos acima e abaixo do trecho que será procurado para "recuperar" os "valores".

 

Obrigado pela atenção. Aguardo retorno.

 

Grande abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

VB6 ou .net ?

 

Independente, por enquando pensei em manipular o HTML.

Pegando dentro de cada "linha escura", todos os "dados".

 

Algo assim:

 

 

procura o primeiro "linhaescura" e armazena em X

enquando X = linhaescura

procura na proxima linha o proximo "dado" e armazena em Y

enquanto Y = dado

[usa o mid para pegar o valor entre "> <"]

procura na proxima linha o proximo "dado" e armazena em Y

fim_enquanto

procura o proximo "linhaescura" e armazena em X

fim_enquanto

 

Entendeu o esquema acima? É algo parecido com isso.

 

 

Pode até ser que com XSLT você consiga montar uma estrutura mais simples de trabalhar isso de uma maneira mais fácil. De uma procurada sobre isso, é show de bola.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro Scorpio.

 

Muito obrigado por sua atenção, enquanto aguardava uma resposta, comecei a fazer a função para manipular o HTML, algo parecido com o que você me sujeriu, porém ainda não estou tendo o resultado esperado.

 

Ficarei grato se você puder dar uma olhada na minha função e se puder identificar o possível erro.

 

Private Sub cmdRecuperarListagemDeContas_Click()
    Dim sTempFile As String
    Dim sTempLineInput As String
    Dim sTempItemIndex As String
    Dim iItemIndex As Integer
    
    iItemIndex = 0

    sTempFile = App.Path & "\TempSourceCode.txt"

    Open sTempFile For Output As #1
    Print #1, Me.wbMain.Document.Body.InnerHTML
    Close #1

    Open sTempFile For Input As #1
    While Not EOF(1)
        Line Input #1, sTempLineInput

        sTempLineInput = Replace(sTempLineInput, "</TD>", "")
        sTempLineInput = Replace(sTempLineInput, "</TR>", "")

        If VBA.Left(sTempLineInput, 42) = "<TD style=""TEXT-ALIGN: right"" class=dados>" Then
            sTempLineInput = Replace(sTempLineInput, "<TD style=""TEXT-ALIGN: right"" class=dados>", "")

            Select Case iItemIndex
                Case 0
                    sTempItemIndex = sTempLineInput
                Case 1, 2
                    sTempItemIndex = sTempItemIndex & vbTab & sTempLineInput
                Case 3
                    sTempItemIndex = sTempItemIndex & vbTab & sTempLineInput
                    Me.lstContasDisponiveis.AddItem sTempItemIndex
                    sTempItemIndex = ""
                    iItemIndex = 0
            End Select
            
            iItemIndex = iItemIndex + 1
        End If
    Wend
    Close #1
End Sub

Enquanto isso vou pesquisar sobre XSLT.

 

Mais uma vez, obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Meu caro Scorpio, gostaria de agradecer por sua atenção e presteza com meu caso.

 

Consegui resolver meu problema apenas com um pequeno ajuste na função que postei acima.

Apenas substituindo "iItemIndex = 0" por "iItemIndex = -1"

 

Mais uma vez, obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa garoto! :D

 

TENTA ASSIM: DESTE MODO ELIMINARA TODO O CÓDIGO HTML

 

Private Sub Command1_Click()

With webbrowser1

.Navigate "c:\site.html"

End With

End Sub

 

 

 

Private Sub Command2_Click()

 

'Aqui pega SOMENTE o texto da página HTML SEM APARECER A CODIFICAÇÃO HTML

Texto = webbrowser1.document.body.innerText

MsgBox Texto

 

'AQUI PEGA SOMENTE O TEXTO HTML DA PAGINA

' Texto = webbrowser1.document.documentElement.outerHTML

'MsgBox Texto

 

 

'PEGA TODO O CÓDIGO FONTE DA PAGINA

'Texto = webbrowser1.document.body.innerHTML

'Text1.Text = Texto

 

'PEGA TODO O CÓDIGO FONTE DA PAGINA

'Texto = webbrowser1.document.documentElement.outerHTML

'Text1.Text = Texto

 

 

 

End Sub

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.