|
VB.Net-Forum - Beitragsübersicht - |
|
Thema | V10: 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 ] |
|
Letzte Aktualisierung: Sonntag, 13. Dezember 2015 |
|