PEGAR TEXTO DE LINK COM WEBBROWSER
                    Pessoal estou tentando pegar o texto de um link com o WebBrowser mas só pego a parte de cima,
queria pegar o conteúdo, alguém pode ajudar?
Ele pega o [Ô]1.0[Ô] quando na verdade queria pegar o
corpo do link que é [Ô]5.0[Ô].
Este é o link do projeto:
Download
            queria pegar o conteúdo, alguém pode ajudar?
Private Sub Form_Load()
    WB.Navigate [Ô]https://www.dropbox.com/s/s3n4dm9nhqjn5pr/Vers%C3%A3o%201.0.txt?dl=0[Ô]
End SubPrivate Sub Command1_Click()
    Dim Texto As String
        Texto = WB.Document.body.innerText
        txtVersao = Mid(Texto, InStr(1, Texto, [Ô]Versão [Ô]) + 7, 3)
End SubEle pega o [Ô]1.0[Ô] quando na verdade queria pegar o
corpo do link que é [Ô]5.0[Ô].
Este é o link do projeto:
Download
                    Opa Jorge, beleza?
Tenho visto seus posts aqui cara. De certa forma me servem pra tomar vergonha na cara, sempre acho que estou velho pra fazer algo e acabo desanimando. Inclusive tem uma pergunta minha que fiz hoje sobre isso.
Enfim, vai ser uma honra finalmente poder dar minha contribuição ao seu aprendizado, ou tentar haha
O lance aÃ, é se você olhar o código fonte da página, você não encontrará o conteúdo [Ô]Versão 5.0[Ô]. Simplesmente porque ele está numa frame. Eu comecei a criar o código aqui, mas deu acesso negado. Direto dando acesso negado... E eu não tava entendendo o motivo. Dei uma pesquisada e vi que isso geralmente acontece quando o conteúdo da frame está num domÃnio diferente. Caso tenha curiosidade para ver:
webBrowser1.Document.Window.Frames([Ô]htmlified[Ô]).document.body.innertext
Esse [Ô]htmlified[Ô] é justamente o ID do frame no site. Basta procurar por [Ô]iframe[Ô] no código fonte que você verá.
AÃ tive uma ideia.
No html você vai encontrar algo como:
<iframe src=[Ô]https://dl.dropboxusercontent.com/content_link_htmlify/AhCXhxUbll3KiwvFfhZ9nqeIevwFMo1EyZU1zuRIXbyta1DwGfvXbUMWzRvIWmH0[Ô] id=[Ô]htmlified[Ô] frameborder=[Ô]0[Ô]></iframe>
Só que esse endereço que aparece aà no src não é estático.
Qual é a idéia?
Ler todo o conteúdo do texto e pesquisar usando Instr a expressão [Ô]<iframe src=[Ô] que é única no documento. Quando você achar esse endereço, você usa o Webbrowser pra carregar ele e finalmente usar o seu código já feito pra pegar a tal Versão. Entendeu?
Eu até faria o código, mas to sem o VB6 na máquina. Aliás, saudades do VB6, minha primeira linguagem. (Fiz os testes usando .NET)
Espero ter ajudado.
Talvez algum amigo te aconselhe como lidar de outra forma com o Access denied. Eu sei que existem algumas bibliotecas prontas que tratam isso, mas para .NET.
Enfim, abraços!
                
            Tenho visto seus posts aqui cara. De certa forma me servem pra tomar vergonha na cara, sempre acho que estou velho pra fazer algo e acabo desanimando. Inclusive tem uma pergunta minha que fiz hoje sobre isso.
Enfim, vai ser uma honra finalmente poder dar minha contribuição ao seu aprendizado, ou tentar haha
O lance aÃ, é se você olhar o código fonte da página, você não encontrará o conteúdo [Ô]Versão 5.0[Ô]. Simplesmente porque ele está numa frame. Eu comecei a criar o código aqui, mas deu acesso negado. Direto dando acesso negado... E eu não tava entendendo o motivo. Dei uma pesquisada e vi que isso geralmente acontece quando o conteúdo da frame está num domÃnio diferente. Caso tenha curiosidade para ver:
webBrowser1.Document.Window.Frames([Ô]htmlified[Ô]).document.body.innertext
Esse [Ô]htmlified[Ô] é justamente o ID do frame no site. Basta procurar por [Ô]iframe[Ô] no código fonte que você verá.
AÃ tive uma ideia.
No html você vai encontrar algo como:
<iframe src=[Ô]https://dl.dropboxusercontent.com/content_link_htmlify/AhCXhxUbll3KiwvFfhZ9nqeIevwFMo1EyZU1zuRIXbyta1DwGfvXbUMWzRvIWmH0[Ô] id=[Ô]htmlified[Ô] frameborder=[Ô]0[Ô]></iframe>
Só que esse endereço que aparece aà no src não é estático.
Qual é a idéia?
Ler todo o conteúdo do texto e pesquisar usando Instr a expressão [Ô]<iframe src=[Ô] que é única no documento. Quando você achar esse endereço, você usa o Webbrowser pra carregar ele e finalmente usar o seu código já feito pra pegar a tal Versão. Entendeu?
Eu até faria o código, mas to sem o VB6 na máquina. Aliás, saudades do VB6, minha primeira linguagem. (Fiz os testes usando .NET)
Espero ter ajudado.
Talvez algum amigo te aconselhe como lidar de outra forma com o Access denied. Eu sei que existem algumas bibliotecas prontas que tratam isso, mas para .NET.
Enfim, abraços!

 Deu esse erro:
 Deu esse erro:
                    Deve ser porque o VB6 não tem suporte à esse método. Isso eu testei no .NET. Me desculpe.
Mas seja como for, segue a dica que falei embaixo.
Leia o texto com:
Dim Texto As String
Texto = WB.Document.body.innerText
Só que na hora de procurar com Instr, você procura por [Ô]<iframe src=[Ô] e pega o endereço que está a frente dessa tag.
AÃ você abre ela no webbrowser com Navigate.
Aà basta você ler novamente com WB.Document.body.innerText procurando por [Ô]Versão[Ô].
Abraços!
            Mas seja como for, segue a dica que falei embaixo.
Leia o texto com:
Dim Texto As String
Texto = WB.Document.body.innerText
Só que na hora de procurar com Instr, você procura por [Ô]<iframe src=[Ô] e pega o endereço que está a frente dessa tag.
AÃ você abre ela no webbrowser com Navigate.
Aà basta você ler novamente com WB.Document.body.innerText procurando por [Ô]Versão[Ô].
Abraços!
                    Não funcionou, deu o mesmo erro 

                
            

                    Pode mostrar seu código?
                
                    Dim texto As String
        texto = WB.Document.body.Frame
        txtVersao = Mid(texto, InStr(1, texto, [Ô]Versão [Ô]) + 7, 3)
                    Ué, mas aà você voltou para o que a gente tinha falado.
Vou fazer alguma coisa aqui, mas como to sem o VB6, deve ter alguns errinhos básicos hahaha Mas pelo menos você entende a idéia.
No load vai ficar a mesma coisa. Vai carregar a página no seu Webbrowser.
Agora no botão muda. Você não vai procurar por [Ô]Versão[Ô] e sim por [Ô]<iframe src=[Ô] . Vai pegar a url que está na frente dela e carregar no seu WebBrowser.
Agora coloque mais um botão aà e insira o código:
Dim texto As String
texto = WB.Document.body.InnerText
txtVersao = Mid(texto, InStr(1, texto, [Ô]Versão [Ô]) + 7, 3)
A ideia é essa.
Abraços!
            Vou fazer alguma coisa aqui, mas como to sem o VB6, deve ter alguns errinhos básicos hahaha Mas pelo menos você entende a idéia.
Private Sub Form_Load()
    WB.Navigate [Ô]https://www.dropbox.com/s/s3n4dm9nhqjn5pr/Vers%C3%A3o%201.0.txt?dl=0[Ô]
End SubNo load vai ficar a mesma coisa. Vai carregar a página no seu Webbrowser.
Private Sub Command1_Click()
    Dim texto as String
    Dim url as String
    Dim inicio as Integer
    Dim fim as Integer
        texto = WB.Document.body.innerText
        inicio = Instr(texto, [Ô]<iframe src=[Ô]) + 14   [ô][ô] Procura no texto pela expressão [Ô]<iframe src=[Ô]  Esse 14 representa o Len([Ô]<iframe src=[Ô]) + 2 para iniciar posteriormente as aspas duplas
        fim = Instr(inicio, texto, [Ô][Ô][Ô]) - 1   [ô][ô] Procura iniciando pelo Ãndice [Ô]inicio[Ô] na variavel [Ô]texto[Ô] as aspas (que vai indicar o fim da url do site)
        url = Mid(texto, inicio, fim)
        WB.Navigate url
End SubAgora no botão muda. Você não vai procurar por [Ô]Versão[Ô] e sim por [Ô]<iframe src=[Ô] . Vai pegar a url que está na frente dela e carregar no seu WebBrowser.
Agora coloque mais um botão aà e insira o código:
Dim texto As String
texto = WB.Document.body.InnerText
txtVersao = Mid(texto, InStr(1, texto, [Ô]Versão [Ô]) + 7, 3)
A ideia é essa.
Abraços!
                    Ao executar esse código:
O WebBrowser vai para a pagina da imagem
Ao menos não dá erro, é sinal de progresso (eu espero)
            Private Sub Command2_Click()
    Dim texto As String
    Dim url As String
    Dim inicio As Integer
    Dim fim As Integer
        texto = WB.Document.body.innerText
        inicio = InStr(texto, [Ô]<iframe src=[Ô]) + 14
        fim = InStr(inicio, texto, [Ô][Ô]) - 1
        url = Mid(texto, inicio, fim)
        WB.Navigate url
End SubO WebBrowser vai para a pagina da imagem

Ao menos não dá erro, é sinal de progresso (eu espero)
                    Fiz aqui no VB.NET. Como pensei, tinha alguns erros hahaha
Por algum motivo, o WebBrowser não está pegando o código-fonte na Ãntegra. Ou seja, o conteúdo que o WebBrowser retorna, é diferente do conteúdo que aparece na janela de código fonte do meu Google Chrome. Tentei todos os métodos do WebBrowser, inclusive alguns que só tem no .NET, e nada de funcionar. O jeito foi usar o namespace System.Net que no seu caso, não te ajuda em nada.
Meu código ficou assim:
E está funcionando.
Agora vou esperar algum colega do VbMania ajudar hahaha
Porque realmente não sei o motivo do WebBrowser não está retornando a parte que eu quero quando eu uso Wb.Document.Body.OuterHtml ou InnerHtml...
    
Essa é a parte que precisa ser convertida do .Net para VB6 (Essa linha retorna o código da página como aparece na janela de código fonte do browser). Acredito que tenha algum método no WebBrowser que retorne tudo, mas eu não achei.
Sei que tem como conseguir o html da página pelo Winsock mandando um Post também, mas acredito que deve ter um método mais fácil.
Enfim, espero que alguém um pouco mais competente te ajude agora hahaha
Abraços!
Obs: O código que te passei retornou exatamente o 5.0... Sinal que pelo menos a ideia está correta.
                
            Por algum motivo, o WebBrowser não está pegando o código-fonte na Ãntegra. Ou seja, o conteúdo que o WebBrowser retorna, é diferente do conteúdo que aparece na janela de código fonte do meu Google Chrome. Tentei todos os métodos do WebBrowser, inclusive alguns que só tem no .NET, e nada de funcionar. O jeito foi usar o namespace System.Net que no seu caso, não te ajuda em nada.
Meu código ficou assim:
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        WebBrowser1.Navigate([Ô]https://www.dropbox.com/s/s3n4dm9nhqjn5pr/Vers%C3%A3o%201.0.txt?dl=0[Ô])
    End Sub
    Private Sub AbreURLToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles AbreURLToolStripMenuItem.Click
        Dim texto As String
        Dim url As String
        Dim inicio As Integer
        Dim fim As Integer
        texto = (New System.Net.WebClient()).DownloadString([Ô]https://www.dropbox.com/s/s3n4dm9nhqjn5pr/Vers%C3%A3o%201.0.txt?dl=0[Ô])
        inicio = InStr(texto, [Ô]<iframe src=[Ô]) + 13
        fim = InStr(inicio, texto, [Ô] [Ô]) - 1
        url = Mid(texto, inicio, fim - inicio)
        WebBrowser1.Navigate(url)
    End Sub
    Private Sub PegaVersaoToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles PegaVersaoToolStripMenuItem.Click
        Dim texto As String
        Dim versao As String
        texto = WebBrowser1.Document.Body.InnerText
        versao = Mid(texto, InStr(1, texto, [Ô]Versão [Ô]) + 7, 3)
        MsgBox(versao)
    End SubE está funcionando.
Agora vou esperar algum colega do VbMania ajudar hahaha
Porque realmente não sei o motivo do WebBrowser não está retornando a parte que eu quero quando eu uso Wb.Document.Body.OuterHtml ou InnerHtml...
    texto = (New System.Net.WebClient()).DownloadString([Ô]https://www.dropbox.com/s/s3n4dm9nhqjn5pr/Vers%C3%A3o%201.0.txt?dl=0[Ô])Essa é a parte que precisa ser convertida do .Net para VB6 (Essa linha retorna o código da página como aparece na janela de código fonte do browser). Acredito que tenha algum método no WebBrowser que retorne tudo, mas eu não achei.
Sei que tem como conseguir o html da página pelo Winsock mandando um Post também, mas acredito que deve ter um método mais fácil.
Enfim, espero que alguém um pouco mais competente te ajude agora hahaha
Abraços!
Obs: O código que te passei retornou exatamente o 5.0... Sinal que pelo menos a ideia está correta.




Vamos aguardar então, muito obrigado por sua ajuda,
vou dar mais uma pesquisada qui, inclusive encontrei
isso:
Private Function WebPageContains(ByVal s As String) As Boolean
    Dim i As Integer, ehtml
    On Error GoTo Erro
      For i = 1 To WB.Document.All.length
        Set ehtml = WB.Document.All.Item(i)
        If Not (ehtml Is Nothing) Then
            If InStr(1, ehtml.innerhtml, s, vbTextCompare) > 0 Then
               WebPageContains = True
               Exit Function
            End If
        End If
    Next i
    Exit Function
Erro:
    MsgBox Err.Description & [Ô] [Ô] & Err.Number, vbCritical
End Functionque pode ser usado para encontrar alguma coisa
combinado com este código aqui:
Private Sub Command1_Click()
    Dim strfindword As String
        strfindword = InputBox([Ô]busca[Ô])
        [ô]strfindword = [Ô]Versão 5.0[Ô]  [ô]<------------------no meu caso tentei com este mas não funcionou
    If WebPageContains(strfindword) = True Then
        txtVersao = strfindword
   End If
End Sub
                        Tópico encerrado , respostas não são mais permitidas
                    
                
