use*_*603 6 c# xpath html-agility-pack
我正在尝试从HTML文档中解析一个简单的C#中的股票交易所信息.问题是我无法理解语法,tr class ="LomakeTaustaVari"被解析出来但是如何获得没有tr-class的第二位?
这是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>
Run Code Online (Sandbox Code Playgroud)
我的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();
}
Run Code Online (Sandbox Code Playgroud)
尝试使用下一个xpath //tr[preceding-sibling::tr[@class='LomakeTaustaVari']]:
var nodes = doc.DocumentNode.SelectNodes("//tr[preceding-sibling::tr[@class='LomakeTaustaVari']]");
Run Code Online (Sandbox Code Playgroud)
它应该选择tr具有类的前一节点的节点LomakeTaustaVari.
仅供参考:如果没有找到节点,则SelectNodes返回方法null.
可能我不明白一些东西,但是任何tr元素选择的最简单的 XPath 应该可以完成工作:
doc.DocumentNode.SelectNodes("//tr")
Run Code Online (Sandbox Code Playgroud)
否则,如果您只想选择具有特定类属性的元素,则可能是:
doc.DocumentNode.SelectNodes("//tr[@class = 'someClass1' or @class = 'someClass2']")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17378 次 |
| 最近记录: |