VB.Net-Forum - Beitragsübersicht -
ThemaV10: Page Class werte in Text/Listboxen laden
Von duti
E-Mail dutistar@hotmail.com
Datum 08. März 2015 um 20:39:11
Frage Hallo ihr lieben Leute.

Ich möchte gerne eine Applikation für mich erstellen mit dem ich Spielerinformationen aus einer Seite wie z.B www.lolking.com lade.

So weit so gut, im unterem CODE seht ihr das ich unter classname "kdaratio" die Werte auslese und die in einer ListBox "Poste".
Dies funktioniert auch. Ich kenne mich einbisschen aus mit HTML&CSS und weis das Seiten mit vielen Containern aufgebaut sind.

Ist es möglich mit dem unterem CODE gezielt eine DIV ansprechen und nur die Class Werte aus der DIV auslesen?
Ich mlchte dass aus dem grund machen, weil die Seite mehrmals den gleichen ClassName verwendet, somit erscheinen im ListBox mehrere Werte die ich nicht gebrauchen kann.

Ich verstehe euch wenn ihr mich nicht versteht :) bin sehr kompliziert. Ich weis Ihr seid sehr hilfreich und schätze dies sehr.
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
WebBrowser1.Navigate(TextBox1.Text)
End Sub
Private Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
Dim PageElement As HtmlElementCollection = WebBrowser1.Document.All
For Each CurElement As HtmlElement In PageElement
If (CurElement.GetAttribute("className") = "kdaratio") Then
Me.ListBox1.Items.Add(CurElement.GetAttribute("innerText").ToString)
End If
Next
End Sub
End Class
mfg duti
Antwort:
Von Nico
E-Mail nico.schertler@studentpartners.de
Datum 12. März 2015 um 18:35:20
Antwort Das sieht doch nach einem ganz guten Einsatzgebiet für XPath aus. Folgender Ausdruck liefert dir bspw. den kda average von Vayne:
Zitat:

//div[@class="ChampionName"]/span[@class="name" and text()="Vayne"]/ancestor::div[@class="ChampionInfo"]/descendant::span[@class="kda average"]/text()

Wir suchen uns als erstes alle Knoten, die die Klasse "ChampionName" haben. Von dort gehen wir zum Kind-Element vom Typ span, das die Klasse "name" hat und dessen text "Vayne" ist. Von dort gehen wir wieder zurück zum "Vorfahren" des Typs div, das die Klasse "ChampionInfo" hat. Von dort weiter zum Nachfahren-Element des Typs span mit der Klasse "kda average" und davon wird der Text geliefert.
XPath ist im HTML Agility Pack implementiert. Du müsstest nur das Dokument laden und dann den Ausdruck reinwerfen.
Es gibt auch Online Parser, die aber teilweise nur wohlgeformtes XML unterstützen. Hier mal eine Anpassung deines Quelltexts zu wohlgeformtem XML:
<div class="nBox MostChampionBoxes">
<div class="nBoxHeader">
Saison 5 Ranked Most 5 Champs
<div class="Button">
<a href="//euw.op.gg/summoner/champions/userName=matr1x" class="opButton mini">???</a>
</div>
</div>
<div class="nBoxContent hidden MostChampionsStatsSeason MostChampionsStatsSeason-active" data-season="5">
<div class="ChampionBoxes">
<div class="ChampionBox Ranked">
<div class="ChampionImage">
<div class="championImage circleImage">
<img src="//sk2.op.gg/images/champions/vayne_square_0.png"/>
</div>
</div>
<div class="ChampionInfo">
<div class="ChampionName">
<span class="name">Vayne</span>
<div class="ChampionMinionKill">
<span class='cs average'>164.5</span> CS
</div>
</div>
<div class="ChampionKDA tip" title="(K 10.74 + A 8.65) / D 8.56">
<div class="ChampionKDARatio normal">
<span class="kda average">2.26:1</span>
<span class="text">KDA</span>
</div>
<span class="kill average">10.7</span> /
<span class="death average">8.6</span> /
<span class="assist average">8.7</span>
</div>
</div>
<div class="ChampionPlayed">
<span class="title">80 Gespielt</span>
<span class="winRatio tip green" title="Siegesrate">64%</span>
</div>
</div>
<div class="ChampionBox Ranked">
<div class="ChampionImage">
<div class="championImage circleImage">
<img src="//sk2.op.gg/images/champions/graves_square_0.png"/>
</div>
</div>
<div class="ChampionInfo">
<div class="ChampionName">
<span class="name">Graves</span>
<div class="ChampionMinionKill">
<span class='cs average'>202.3</span> CS
</div>
</div>
<div class="ChampionKDA tip" title="(K 12.45 + A 10.55) / D 8.23">
<div class="ChampionKDARatio normal">
<span class="kda average">2.80:1</span>
<span class="text">KDA</span>
</div>
<span class="kill average">12.5</span> /
<span class="death average">8.2</span> /
<span class="assist average">10.5</span>
</div>
</div>
</div>
</div>
</div>
</div>
Nico
[ Antwort schreiben | Zurück zum VB.Net-Forum | Forum-Hilfe ]
Antworten
V10: Page Class werte in Text/Listboxen laden - duti 08. März 2015 um 20:39:11
Re: Page Class werte in Text/Listboxen laden - Nico 12. März 2015 um 08:15:54
Re: Page Class werte in Text/Listboxen laden - duti 12. März 2015 um 14:19:48
Re: Page Class werte in Text/Listboxen laden - Nico 12. März 2015 um 18:35:20

Ihre Antwort
(Nick-)Name   Wichtige Informationen zur Namensangabe
E-Mail (opt.)  Wichtige Informationen zur Angabe einer eMail-Adresse
Thema   Wichtige Informationen zur Angabe eines Themas
Betrifft (IDE)  VB 2010
Ihre Antwort
Smilies
Mehr...
FettKursivUnterstrichen   Übersicht der Tipp-KürzelÜbersicht der Projekt-KürzelÜbersicht der Bücher-Kürzel 
Homepage
Titel
Root-Smilies              
             
             
[ Zurück zum VB.Net-Forum | Forum-Archiv | Forum-Hilfe | Chat ]

Zum Seitenanfang

Startseite | VB-/VBA-Tipps | Projekte | Tutorials | API-Referenz | Komponenten | Bücherecke | Gewinnspiele | VB.Net | VB/VBA-Forum | DirectX | DirectX-Forum | Chat | Ausschreibungen | Links | Suchen | Stichwortverzeichnis | Feedback | Impressum

Seite empfehlen Bug-Report
Letzte Aktualisierung: Sonntag, 13. Dezember 2015