Jump to content

Obter todos os Elementos de uma página HTml


Lukas S.
 Share

Recommended Posts

Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        WebBrowser1.Navigate("www.youtube.com")
    End Sub

    Private Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
        Dim allelements As HtmlElementCollection = WebBrowser1.Document.All

        For Each webpageelement As HtmlElement In allelements

            ListBox1.Items.Add(webpageelement.GetAttribute("src"))
        Next
        For i As Integer = 0 To ListBox1.Items.Count - 1
            If ListBox1.Items.Item(i) = " ".ToString Then
                ListBox1.Items.Remove(i)
            End If
        Next
    End Sub



End Class

Soo... O que eu pretendo fazer é poder obter todos os elementos de uma página para mais tarde conseguir fazer manipulação de botôes online podendo assim talvez até mesmo criar um Bot que necessito 😁

O problema... Bem o problema é que muitos dos elementos bem não tem source entao eu nao consigo tirar o Branco ... já tentei com o  "  If ListBox1.Items.Item(i) = " ".ToString Then " mas nada consegui ... se alguém poder ajudar pfv dê ai a sua opiniao

E o Impossível foi criado por pessoas fracas pra acabar com o sonho das pessoas fortes. Não deixes que acabem com o teu. Sonha , luta , ambiciona e realiza. Se amas , se gostas tu vais conseguir. Cala todas as pessoas que um dia duvidaram de ti e prova que foste mais forte de qualquer outro.

Link to comment
Share on other sites

" ".ToString não faz sentido.

" " já é uma explícitamente string.

Como estás a apanhar todos os elementos, e nem todos têm o atributo, deverias antes tentar perceber o que é que é devolvido nesses casos.

Ainda assim, experimenta com trim:

        For i As Integer = ListBox1.Items.Count - 1 To 0 Step -1
            If ListBox1.Items.Item(i).Trim = String.Empty Then
                ListBox1.Items.Remove(i)
            End If
        Next

Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Link to comment
Share on other sites

Estranho ribeiro porque eu tentei por sem ser .ToString e causava erro

E o Impossível foi criado por pessoas fracas pra acabar com o sonho das pessoas fortes. Não deixes que acabem com o teu. Sonha , luta , ambiciona e realiza. Se amas , se gostas tu vais conseguir. Cala todas as pessoas que um dia duvidaram de ti e prova que foste mais forte de qualquer outro.

Link to comment
Share on other sites

Não era, garantidamente, dali.

Quanto muito, terias de colocar:

ListBox1.Items.Item(i).ToString = " "

Porque o objecto que espetas para a listbox pode não ter representação decente.

Pensando bem, até é melhor colocares o .ToString como te digo acima: no Item(i)

Já experimentaste com o Trim ?

Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Link to comment
Share on other sites

já exprimentei e nada deu ... estranho nunca tinha ouvido falado do trim ... pra que serve ?

E o Impossível foi criado por pessoas fracas pra acabar com o sonho das pessoas fortes. Não deixes que acabem com o teu. Sonha , luta , ambiciona e realiza. Se amas , se gostas tu vais conseguir. Cala todas as pessoas que um dia duvidaram de ti e prova que foste mais forte de qualquer outro.

Link to comment
Share on other sites

Boas

Tens 3 opções de Trim:

-> Trim serve para remover espaços no inicio e no fim de uma string.

-> TrimEnd remove os espaços no final da string

-> TrimStart remove espaços no inicio da string

A informática chegou para resolver problemas que antes não existiam

Quem ri por último é porque está conectado a 52 Kbs.

Link to comment
Share on other sites

já exprimentei e nada deu ... estranho nunca tinha ouvido falado do trim ... pra que serve ?

Dar até dá. Só não reparei que estavas a utilizar .Remove(i).

Um dos grandes problemas do pessoal com as listbox é não entenderem que os items não são forçosamente Strings.

É mantida uma coleção de objectos.

Ao fazeres .Remove(i), ele vai tentar eliminar um item do tipo Integer com o número i, ou seja, não elimina coisa nenhuma.

Podes resolver o problema com RemoveAt(i), que já indica explicitamente que é o índice e não o item:

For i As Integer = ListBox1.Items.Count - 1 To 0 Step -1
    If ListBox1.Items.Item(i).Trim = String.Empty Then
        ListBox1.Items.RemoveAt(i)
    End If
Next

Deixo-te com uma alternativa que te poupa o teres de fazer dois conjuntos de iteração:

Public Class Form1
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        WebBrowser1.ScriptErrorsSuppressed = True
        WebBrowser1.Navigate("www.youtube.com")
    End Sub

    Private Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
        For Each webpageelement As HtmlElement In WebBrowser1.Document.All
            Dim srcatt As String = webpageelement.GetAttribute("src")
            If Not srcatt.Trim = String.Empty Then ListBox1.Items.Add(srcatt)
        Next
    End Sub
End Class

Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.