C # parse html с xpath

c# html-agility-pack xpath

Вопрос

Я пытаюсь разобрать информацию о фондовой бирже с помощью простого куска C # из HTML-документа. Проблема в том, что я не могу окунуться в синтаксис, tr class = «LomakeTaustaVari» получает разбор, но как мне получить второй бит, который не имеет tr-класса?

Вот фрагмент HTML, он повторяет его с разными значениями.

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

Мой код 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();
}

Популярные ответы

Попробуйте использовать следующий xpath //tr[preceding-sibling::tr[@class='LomakeTaustaVari']] :

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

Он должен выбрать узлы, которые имеют предшествующий узел tr с классом LomakeTaustaVari .

Просто FYI: если узлов не найдено, метод SelectNodes возвращает значение null .



Related

Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow