C# parse html avec xpath
Je suis en train d'analyser le stock échanger de l'information avec une simple pièce de C# à partir d'un document HTML. Le problème est que je ne peux pas obtenir ma tête autour de la syntaxe, de la tr class="LomakeTaustaVari" obtient analysé, mais comment puis-je obtenir le deuxième bit qui n'a pas de tr-classe?
Voici un morceau de code HTML, il répète auto-whit des valeurs différentes.
<tr class="LomakeTaustaVari">
<td><div class="Ensimmainen">12:09</div></td>
<td><div>MSI</div></td>
<td><div>POH</div></td>
<td><div>42</div></td>
<td><div>64,50</div></td>
</tr>
<tr>
<td><div class="Ensimmainen">12:09</div></td>
<td><div>SRE</div></td>
<td><div>POH</div></td>
<td><div>156</div></td>
<td><div>64,50</div></td>
</tr>
Mon code C#:
{
HtmlAgilityPack.HtmlWeb web = new HtmlWeb();
HtmlAgilityPack.HtmlDocument doc = web.Load ("https://www.op.fi/op/henkiloasiakkaat/saastot-ja-sijoitukset/kurssit-ja-markkinat/markkinat?sivu=alltrades.html&sym=KNEBV.HSE&from=10:00&to=19:00&id=32453");
foreach (HtmlNode row in doc.DocumentNode.SelectNodes("//tr[@class='LomakeTaustaVari']"))
{
Console.WriteLine(row.InnerText);
}
Console.ReadKey();
}
Serait une
//tr[not(@class)]
travail de sélection que <tr>
sans classe?OriginalL'auteur user2886603 | 2013-10-16
Vous devez vous connecter pour publier un commentaire.
Essayez d'utiliser la prochaine xpath
//tr[preceding-sibling::tr[@class='LomakeTaustaVari']]
:Il faut sélectionner les nœuds qui ont précédé nœud
tr
avec classeLomakeTaustaVari
.Juste pour info: si aucun nœud n'est trouvé,
SelectNodes
méthode renvoienull
.OriginalL'auteur Alex
Si vous parvenez à obtenir une référence à la
<tr class="LomakeTaustaVari">
élément, je vois deux solutions possibles.Vous pouvez naviguer vers le parent et ensuite trouver tout son
<tr>
enfants:Vous pouvez également utiliser
NextSibling
pour obtenir le prochain<tr>
:Veuillez noter que l'utilisation de la seconde alternative, vous risquez de rencontrer des problèmes, parce que les espaces présents dans le code HTML peut être interprété comme étant un élément distinct.
Pour surmonter cette difficulté, vous pouvez appeler récursivement
NextSibling
jusqu'à ce que vous rencontrez untr
élément.OriginalL'auteur futankamon
Cela va se répéter sur tous les nœuds dans le document. Vous aurez probablement aussi besoin d'être plus précis avec noeud de départ, de sorte que vous ne sélectionnez que vous êtes intéressé à.
OriginalL'auteur Peter
Probablement que je ne comprends pas quelque chose, mais le plus simple XPath pour tout tr élément de sélection devrait faire le travail:
Sinon, dans le cas où vous souhaitez sélectionner des éléments spécifiques classe attributs seulement, il pourrait être:
OriginalL'auteur galenus