none
Como copiar dados de uma página do WebBrowser para um ListBox VB.NET RRS feed

  • Pergunta

  • Boa tarde , 

    Estou precisando pegar alguns elementos de uma página e mandar para um list box ..

    No caso preciso pegar todos os conteudos com as class prog_comp_data, prog_comp_tit

    A estrutura da página é assim :

    <li class="data_prog">Quarta, 18/12</li>
    <li class="home">
    <a href="/programacao/programa/321981-crash-bernstein" title="Crash &amp; Bernstein"><div class='prog_comp_data'>14h00</div><span class='prog_comp_tit'>Crash & Bernstein</span><br /><span class='metadados'>Séries/Animação</span></a>
    </li>
    <li class="home">
    <a href="/programacao/programa/335266-just-kidding-zoeira" title="Just Kidding: Zoeira"><div class='prog_comp_data'>14h30</div><span class='prog_comp_tit'>Just Kidding: Zoeira</span><br /><span class='metadados'>Séries/Comédia</span></a>
    </li>
    <li class="home">
    <a href="/programacao/programa/99016-hercules" title="Hércules"><div class='prog_comp_data'>15h00</div><span class='prog_comp_tit'>Hércules</span><br /><span class='metadados'>Filme/Animação</span></a>
    </li>
    <li class="home">
    <a href="/programacao/programa/179937-kid-vs-kat" title="Kid vs. Kat"><div class='prog_comp_data'>16h45</div><span class='prog_comp_tit'>Kid vs. Kat</span><br /><span class='metadados'>Infantil/Animação</span></a>
    </li>
    

    Preciso pegar apenas o horário e o titulo ...

    Tentei usar este código :> 

     Try
                If Not IsNothing(NavegaGuia.Document) Then
                    Dim elementos = NavegaGuia.Document.GetElementsByTagName("span")
                    If (Not IsNothing(elementos) And elementos.Count > 0) Then
                        Dim i As Integer = 0
                        Dim resultado As String
                        While (i < elementos.Count AndAlso Not elementos.Item(i).OuterHtml().Contains("prog_comp_tit"))
                            i += 1
                        End While
                        If (i < elementos.Count) Then
                            resultado = elementos.Item(i).InnerText
                            ListBox1.Items.Add(resultado) '// se fez assim???
                        End If
                    End If
                End If
            Catch ex As Exception
    
            End Try

    Mais ele só pega 1 elemento e eu preciso que pegue todos os horários e titulos da pagina toda :)

    Abraços , help

    quarta-feira, 18 de dezembro de 2013 16:18

Respostas

  • Try
    	ListBox1.Items.Clear()
    	Dim Tags(1) As String
    	Tags(0) = "span"
    	Tags(1) = "div"
    	If Not IsNothing(NavegaGuia.Document) Then
    		For Each _Tag As String In Tags
    			Dim elementos As IList(Of HtmlElement) = NavegaGuia.Document.GetElementsByTagName(_Tag).OfType(Of HtmlElement).ToList()
    			If Not IsNothing(elementos) Then
    				Dim elementosPesquisa As IList(Of HtmlElement) = _
    					elementos.Where(Function(w) w.OuterHtml.Contains("prog_comp_tit") OrElse w.OuterHtml.Contains("prog_comp_data")).ToList()
    				If Not IsNothing(elementosPesquisa) AndAlso elementosPesquisa.Count > 0 Then
    					For Each el As HtmlElement In elementosPesquisa
    						ListBox1.Items.Add(el.OuterText)
    					Next
    				End If
    			End If
    		Next
    	End If
    Catch ex As Exception
    	MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Information)
    End Try
    Assim!!!

    Fulvio Cezar Canducci Dias

    • Marcado como Resposta Felipe Crispin sexta-feira, 20 de dezembro de 2013 17:48
    sexta-feira, 20 de dezembro de 2013 17:40
  • Mais tem como deixar tipo assim 13:20 - Programa se passado ?

    Ele fez tudo certo , pego as class :) 

    If Not IsNothing(NavegaGuia.Document) Then
    	Dim elementos As IList(Of HtmlElement) = NavegaGuia.Document.GetElementsByTagName("a").OfType(Of HtmlElement).ToList()
    	If Not IsNothing(elementos) Then
    		For Each el As HtmlElement In elementos
    			Dim Span As HtmlElement = el.GetElementsByTagName("span").OfType(Of HtmlElement).FirstOrDefault()
    			Dim Div As HtmlElement = el.GetElementsByTagName("div").OfType(Of HtmlElement).FirstOrDefault()
    			If Not IsNothing(Span) AndAlso Not IsNothing(Div) Then
    				ListBox1.Items.Add(String.Format("{0} - {1}", Div.OuterText, Span.OuterText))
    			End If
    		Next
    	End If
    End If



    Fulvio Cezar Canducci Dias

    • Marcado como Resposta Felipe Crispin sexta-feira, 20 de dezembro de 2013 18:05
    sexta-feira, 20 de dezembro de 2013 18:02

Todas as Respostas

  • Olá, Felipe!

    Este exemplo serve para você?

     Private Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) HandlesWebBrowser1.DocumentCompleted
          

            ListBox1.Items.Add(WebBrowser1.DocumentTitle) 'Título da página
            ListBox1.Items.Add(WebBrowser1.DocumentType) 'Navegador e tipo de documento
            ListBox1.Items.Add(WebBrowser1.EncryptionLevel) 'Bits
            ListBox1.Items.Add(WebBrowser1.StatusText) 'Mostra o Status do texto após carregado
            ListBox1.Items.Add(TimeString) 'Mostra a hora do acesso!

        End Sub

    Espero ter-lhe ajudado!


    Márcio Silva Programador desde &quot;Visual Basic 6&quot; nas horas vagas! Estou aprendendo...

    quinta-feira, 19 de dezembro de 2013 04:34
  • Exemplo na imagem:

    Imagem Ilustrativa


    Márcio Silva Programador desde &quot;Visual Basic 6&quot; nas horas vagas! Estou aprendendo...

    quinta-feira, 19 de dezembro de 2013 04:51
  • Boa tarde , esse exemplo não deu muito certo , pois preciso pegar apenas oque está entre as class da pagina em Html ... O horario que esta na class e o titulo ... esse seu exemplo não deu nada certo rs ... Muito obrigado se puder me ajudar agradeço ...
    sexta-feira, 20 de dezembro de 2013 16:06
  • Try
    	ListBox1.Items.Clear()
    	Dim Tags(1) As String
    	Tags(0) = "span"
    	Tags(1) = "div"
    	If Not IsNothing(NavegaGuia.Document) Then
    		For Each _Tag As String In Tags
    			Dim elementos As IList(Of HtmlElement) = NavegaGuia.Document.GetElementsByTagName(_Tag).OfType(Of HtmlElement).ToList()
    			If Not IsNothing(elementos) Then
    				Dim elementosPesquisa As IList(Of HtmlElement) = _
    					elementos.Where(Function(w) w.OuterHtml.Contains("prog_comp_tit") OrElse w.OuterHtml.Contains("prog_comp_data")).ToList()
    				If Not IsNothing(elementosPesquisa) AndAlso elementosPesquisa.Count > 0 Then
    					For Each el As HtmlElement In elementosPesquisa
    						ListBox1.Items.Add(el.OuterText)
    					Next
    				End If
    			End If
    		Next
    	End If
    Catch ex As Exception
    	MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Information)
    End Try
    Assim!!!

    Fulvio Cezar Canducci Dias

    • Marcado como Resposta Felipe Crispin sexta-feira, 20 de dezembro de 2013 17:48
    sexta-feira, 20 de dezembro de 2013 17:40
  • Mais tem como deixar tipo assim 13:20 - Programa se passado ?

    Ele fez tudo certo , pego as class :) 

    sexta-feira, 20 de dezembro de 2013 17:49
  • Mais tem como deixar tipo assim 13:20 - Programa se passado ?

    Ele fez tudo certo , pego as class :) 

    If Not IsNothing(NavegaGuia.Document) Then
    	Dim elementos As IList(Of HtmlElement) = NavegaGuia.Document.GetElementsByTagName("a").OfType(Of HtmlElement).ToList()
    	If Not IsNothing(elementos) Then
    		For Each el As HtmlElement In elementos
    			Dim Span As HtmlElement = el.GetElementsByTagName("span").OfType(Of HtmlElement).FirstOrDefault()
    			Dim Div As HtmlElement = el.GetElementsByTagName("div").OfType(Of HtmlElement).FirstOrDefault()
    			If Not IsNothing(Span) AndAlso Not IsNothing(Div) Then
    				ListBox1.Items.Add(String.Format("{0} - {1}", Div.OuterText, Span.OuterText))
    			End If
    		Next
    	End If
    End If



    Fulvio Cezar Canducci Dias

    • Marcado como Resposta Felipe Crispin sexta-feira, 20 de dezembro de 2013 18:05
    sexta-feira, 20 de dezembro de 2013 18:02
  • Muito obrigado cara , me ajudou demais , salvo minha vida :))
    sexta-feira, 20 de dezembro de 2013 18:05
  • Muito obrigado cara , me ajudou demais , salvo minha vida :))
    Vlw

    Fulvio Cezar Canducci Dias

    sexta-feira, 20 de dezembro de 2013 18:10