<span class="xyz" attr2="abc" /> Wert 2. Attr. ermitteln

  • VB.NET
  • .NET 4.5

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

    <span class="xyz" attr2="abc" /> Wert 2. Attr. ermitteln

    Hi,

    ich habe auf einer Webseite folgende Zeile

    HTML-Quellcode

    1. <div class="ArticleNumbers">
    2. <p><strong>Artikel-Nr.:</strong> 12345
    3. <span class=" c-red"><span class="ordernumber" d-ordernumber="12345"></span></span>
    4. </p>
    5. <p><strong>EAN:</strong> 789789789798
    6. <span class=" c-red"><span class="ean" d-ordernumber="12345"></span></span>
    7. </p>
    8. </div>


    Auf die Div Class kann ich bereits zugreifen mit folgendem Code

    VB.NET-Quellcode

    1. For Each h As HtmlElement In WebBrowser1.Document.GetElementsByTagName("div")
    2. If Not Object.ReferenceEquals(h.GetAttribute("className"), Nothing) AndAlso h.GetAttribute("className").Equals("ArticleNumbers") Then
    3. Button5.Text = h.innerText
    4. Exit For
    5. End If
    6. Next


    Jetzt möchte ich aber gezielt die Artikelnr auslesen und in einem Label anzeigen. Gibt es eine Möglichkeit den wert von d-ordernumber auszulesen?
    Hier stehe ich ein bischen auf dem Schlauch. ?(
    Du kannst auch die HtmlElemente in einem HtmlElement durchlaufen.

    VB.NET-Quellcode

    1. For Each h As HtmlElement In WebBrowser1.Document.GetElementsByTagName("div")
    2. If Not Object.ReferenceEquals(h.GetAttribute("className"), Nothing) AndAlso h.GetAttribute("className").Equals("ArticleNumbers") Then
    3. For Each h2 As HtmlElement In h.GetElementsByTagName("span")
    4. If Not Object.ReferenceEquals(h.GetAttribute("className"), Nothing) AndAlso h2.GetAttribute("className").Equals("ordernumber") Then
    5. Dim value = h2.GetAttribute("d-ordernumber")
    6. Debug.WriteLine(value)
    7. Exit For
    8. End If
    9. Next
    10. End If
    11. Next
    And i think to myself... what a wonderfuL World!
    Funktioniert - daran habe ich nicht gedacht. ;)

    Was mich nur wundert ist das die Artikelnr. die er ausliest nicht die ist die im WEbbrowser1 angezeigt wird sondern von einem anderen Artikel-
    ich denke da es mehrere div classes mit dem gleichen namen gibt wirft er die letzte Art aus der Collection raus.
    Ich versuche mal nach dem ersten eintrag die abfrage zu stoppen.

    Aber vom Prinzip hats gepasst, genau das habe ich gesucht! Vielen Dank!!

    EDIT

    War wie ich gedacht habe. Läuft bis zum lezten Artikel durch un gibt die Artikelnr uas ( Z.Bsp wenn "andere Kunden Kauften auch " auf der Seite ist )
    Ein zusätzliches Exit For hat geholfen

    Hier der finale Code

    VB.NET-Quellcode

    1. For Each h As HtmlElement In WebBrowser1.Document.GetElementsByTagName("div")
    2. If Not Object.ReferenceEquals(h.GetAttribute("className"), Nothing) AndAlso h.GetAttribute("className").Equals("ArticleNumbers") Then
    3. For Each h2 As HtmlElement In h.GetElementsByTagName("span")
    4. If Not Object.ReferenceEquals(h.GetAttribute("className"), Nothing) AndAlso h2.GetAttribute("className").Equals("ordernumber") Then
    5. Dim value = h2.GetAttribute("d-ordernumber")
    6. Debug.WriteLine(value)
    7. Exit For
    8. End If
    9. Next
    10. Exit For
    11. End If
    12. Next


    @ Eddy: Vielen Dank nochmal

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „AbsolutCF“ ()