C # parse html avec xpath

c# html-agility-pack xpath

Question

J'essaie d'analyser les informations boursières avec un simple morceau de C # à partir d'un document HTML. Le problème est que je ne peux pas comprendre la syntaxe, la classe tr class = "LomakeTaustaVari" est analysée, mais comment puis-je obtenir le second bit sans classe tr?

Voici un extrait du code HTML qui se répète avec 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();
}

Réponse populaire

Essayez d'utiliser le prochain xpath //tr[preceding-sibling::tr[@class='LomakeTaustaVari']] :

var nodes = doc.DocumentNode.SelectNodes("//tr[preceding-sibling::tr[@class='LomakeTaustaVari']]");

Il convient de sélectionner les nœuds ayant le nœud précédent tr avec la classe LomakeTaustaVari .

Juste pour votre information: si aucun noeud n'a été trouvé, la méthode SelectNodes renvoie null .



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi