C # parse html con xpath

c# html-agility-pack xpath

Domanda

Sto cercando di analizzare le informazioni di borsa con un semplice pezzo di C # da un documento HTML. Il problema è che non riesco a capire la sintassi, il tr class = "LomakeTaustaVari" viene analizzato ma come faccio a ottenere il secondo bit che non ha tr-class?

Ecco una parte dell'HTML, si ripete da sola con valori diversi.

<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>

Il mio codice C #:

<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>

Risposta popolare

Prova ad usare il prossimo xpath //tr[preceding-sibling::tr[@class='LomakeTaustaVari']] :

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

Dovrebbe selezionare nodi che hanno il nodo precedente tr con classe LomakeTaustaVari .

Solo FYI: se nessun nodo trovato, il metodo SelectNodes restituisce null .




Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché