HTML Inhalte suchen und Downloaden

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von Morrison.

    HTML Inhalte suchen und Downloaden

    Hallo liebe Community,

    Ich habe mal eine Frage,

    Wie kann ich folgende HTML Daten suchen und in eine Listview einfügen?

    HTML-Quellcode

    1. <a href="Link">
    2. Download: MPG
    3. </a>
    4. <a href="Link">
    5. Download: MP4 (iPad)
    6. </a>
    7. <a href="Link">
    8. Download: MP4
    9. </a>
    10. <a href="Link">
    11. Download: 3GP
    12. </a>



    Ich möchte aber die mit der MP4 haben.
    Da es aber viele href gibt kommt immer das mit dem MPG Format und die will ich aber nicht.
    Ich dachte mir das ich das mit einem Index lösen kann aber ich habe den Code nicht mehr von dem Projekt.
    Da mein Server einen Kabelbrand hatte sind alle Daten gelöscht worden und jetzt muss ich das alles wieder schreiben.

    Danke für eure Antworten
    Hi,

    ich denke Du müsstest die <a href="Link"> mit .innerText auslesen und nach Download: MP4 suchen!

    Um Images, Links oder Src auszulesen kann man dies nehmen:

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Shared Function GetLinksAbsolute(ByVal Page As String, ByVal BaseUrl As String) As List(Of String)
    2. Dim reglinks As String = "<a\b[^>]*>(.*?)</a>"
    3. Dim links As MatchCollection = Regex.Matches(Page, reglinks, RegexOptions.IgnoreCase Or RegexOptions.Multiline)
    4. Dim LinkList As New List(Of String)
    5. Dim rgx As String = "href\s*=\s*[""'].*?[""']"
    6. Dim rm As Match
    7. Dim hr As String
    8. Dim lhr As String
    9. For Each mt As Match In links
    10. rm = Regex.Match(mt.Value, rgx, RegexOptions.IgnoreCase Or RegexOptions.Multiline)
    11. hr = Regex.Replace(rm.Value, "href\s*=\s*[""']", "", RegexOptions.IgnoreCase Or RegexOptions.Multiline)
    12. hr = Regex.Replace(hr, "[""']", "")
    13. lhr = hr.ToLower
    14. If Not lhr.StartsWith("http://") Then
    15. If Not lhr.StartsWith("javascript:") Then
    16. hr = BaseUrl & hr
    17. End If
    18. End If
    19. LinkList.Add(hr)
    20. Next
    21. Return LinkList
    22. End Function
    23. Public Shared Function GetImageSrcAbsolute(ByVal Page As String, ByVal BaseUrl As String) As List(Of String)
    24. Dim regImages As String = "<img\b[^>]*>"
    25. Dim links As MatchCollection = Regex.Matches(Page, regImages, RegexOptions.IgnoreCase Or RegexOptions.Multiline)
    26. Dim SrcList As New List(Of String)
    27. Dim hr As String
    28. Dim lhr As String
    29. For Each mt As Match In links
    30. hr = GetSrcParam(mt.Value)
    31. lhr = hr.ToLower
    32. If Not lhr.StartsWith("http://") Then
    33. If Not lhr.StartsWith("javascript:") Then
    34. hr = BaseUrl & hr
    35. End If
    36. End If
    37. SrcList.Add(hr)
    38. Next
    39. Return SrcList
    40. End Function
    41. Private Shared Function GetSrcParam(ByVal Tag As String) As String
    42. Dim rgx As String = "src\s*=\s*[""'].*?[""']"
    43. Dim rm As Match
    44. Dim hr As String
    45. rm = Regex.Match(Tag, rgx, RegexOptions.IgnoreCase Or RegexOptions.Multiline)
    46. hr = Regex.Replace(rm.Value, "src\s*=\s*[""']", "", RegexOptions.IgnoreCase Or RegexOptions.Multiline)
    47. Return Regex.Replace(hr, "[""']", "")
    48. End Function

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Morrison“ ()

    Morrison schrieb:

    Hi,

    ich denke Du müsstest die <a href="Link"> mit .innerText auslesen und nach Download: MP4 suchen!

    Um Images, Links oder Src auszulesen kann man dies nehmen:

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Shared Function GetLinksAbsolute(ByVal Page As String, ByVal BaseUrl As String) As List(Of String)
    2. Dim reglinks As String = "<a\b[^>]*>(.*?)</a>"
    3. Dim links As MatchCollection = Regex.Matches(Page, reglinks, RegexOptions.IgnoreCase Or RegexOptions.Multiline)
    4. Dim LinkList As New List(Of String)
    5. Dim rgx As String = "href\s*=\s*[""'].*?[""']"
    6. Dim rm As Match
    7. Dim hr As String
    8. Dim lhr As String
    9. For Each mt As Match In links
    10. rm = Regex.Match(mt.Value, rgx, RegexOptions.IgnoreCase Or RegexOptions.Multiline)
    11. hr = Regex.Replace(rm.Value, "href\s*=\s*[""']", "", RegexOptions.IgnoreCase Or RegexOptions.Multiline)
    12. hr = Regex.Replace(hr, "[""']", "")
    13. lhr = hr.ToLower
    14. If Not lhr.StartsWith("http://") Then
    15. If Not lhr.StartsWith("javascript:") Then
    16. hr = BaseUrl & hr
    17. End If
    18. End If
    19. LinkList.Add(hr)
    20. Next
    21. Return LinkList
    22. End Function
    23. Public Shared Function GetImageSrcAbsolute(ByVal Page As String, ByVal BaseUrl As String) As List(Of String)
    24. Dim regImages As String = "<img\b[^>]*>"
    25. Dim links As MatchCollection = Regex.Matches(Page, regImages, RegexOptions.IgnoreCase Or RegexOptions.Multiline)
    26. Dim SrcList As New List(Of String)
    27. Dim hr As String
    28. Dim lhr As String
    29. For Each mt As Match In links
    30. hr = GetSrcParam(mt.Value)
    31. lhr = hr.ToLower
    32. If Not lhr.StartsWith("http://") Then
    33. If Not lhr.StartsWith("javascript:") Then
    34. hr = BaseUrl & hr
    35. End If
    36. End If
    37. SrcList.Add(hr)
    38. Next
    39. Return SrcList
    40. End Function
    41. Private Shared Function GetSrcParam(ByVal Tag As String) As String
    42. Dim rgx As String = "src\s*=\s*[""'].*?[""']"
    43. Dim rm As Match
    44. Dim hr As String
    45. rm = Regex.Match(Tag, rgx, RegexOptions.IgnoreCase Or RegexOptions.Multiline)
    46. hr = Regex.Replace(rm.Value, "src\s*=\s*[""']", "", RegexOptions.IgnoreCase Or RegexOptions.Multiline)
    47. Return Regex.Replace(hr, "[""']", "")
    48. End Function
    Ich dachte eher an Regex aber da gibt es mit zuviele Links.
    Was ich mal versucht habe ist es mit einem Index zu versuchen aber das läuft iwie nicht so richtig
    Hi!

    Probier mal folgendes:

    Du brauchst eine TextBox und ein Button fürs .Navigate..In die TextBox kommt die URL..mit http://www usw.

    Dann brauchst Du natürlich einen WebBrowser1 und eine Listbox. Ich hab zusätzlich nen TabControl womit ich von Quelltext und INet-Seite wechseln kann und eine ComboBox die mir alle Elemente auflistet...aber egal..

    Das wichtigste wäre dann das hier:

    Spoiler anzeigen

    VB.NET-Quellcode

    1. For Each element As HtmlElement In Me.WebBrowser1.Document.All
    2. If GetSrcParam(element.OuterHtml) <> "" Then
    3. If Not GetSrcParam(element.OuterHtml).Contains("http") Then
    4. If Not ListBox1.Items.Contains(TextBox1.Text & GetSrcParam(element.OuterHtml)) ThenListBox1.Items.Add(element.TagName & " --> " & element.InnerText & " --> " & TextBox1.Text & GetSrcParam(element.OuterHtml))
    5. End If
    6. Else
    7. If Not ListBox1.Items.Contains(GetSrcParam(element.OuterHtml)) ThenListBox1.Items.Add(element.TagName & " --> " & element.InnerText & " --> " & GetSrcParam(element.OuterHtml))
    8. End If
    9. End If
    10. End If
    11. Next


    Und dieses für den Link ( GetSrcParam :(

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private Shared Function GetSrcParam(ByVal Tag As String) As String
    2. Dim rgx As String = "href\s*=\s*[""'].*?[""']"
    3. Dim rm As Match
    4. Dim hr As Stringrm = Regex.Match(Tag, rgx, RegexOptions.IgnoreCase Or RegexOptions.Multiline)
    5. hr = Regex.Replace(rm.Value, "href\s*=\s*[""']", "", RegexOptions.IgnoreCase Or RegexOptions.Multiline)Return Regex.Replace(hr, "[""']", "")
    6. End Function