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 #:
{
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();
}
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
.