我正在尝试从包含HtmlAgilityPack的2-6个表之间的所有DIV中提取信息。
只要有相同数量的表格,我就可以使用
毫无问题地获取信息var thirdTable = res.SelectSingleNode("table[3]");
每个表都包含tds,第一个包含我要检查的名称。
目前已完成<table border="0" cellspacing="1" cellpadding="4" width="100%">
<tbody>
<tr bgcolor="#505050">
<td colspan="2" class="white">
<b>Character Deaths</b>
</td>
</tr>
</tbody>
</table>
var charTest = thirdTable.ChildNodes[0].InnerText.StartsWith(checkInfo);
但由于表的数量不时不同,因此我无法在没有NullReferenceException的情况下提取信息。
如何检查表的数量,然后告诉哪些表存在?
编辑:
var URLCharacter = "http://www..." + tbSearch.Text;
HtmlAgilityPack.HtmlWeb doc = new HtmlAgilityPack.HtmlWeb();
htmldocObject = doc.Load(URLCharacter);
//Find the right contentdiv
var res = htmldocObject.DocumentNode.SelectSingleNode("//div[@class='BoxContent']");
答案 0 :(得分:0)
我要做的是尝试通过选择所有表来获取第三个表,跳过前两个表,然后选择下一个表(第三个)。如果你得到一个元素,用它做你想做的事,否则什么都不做。
var thirdTable = res.Elements("table").Skip(2).FirstOrDefault();
if (thirdTable != null)
{
// do stuff
}
如果您在使用Elements()
方法时遇到问题,可以使用SelectNodes()
和适当的xpath进行替换。
var thirdTable = res.SelectNodes("table").Skip(2).FirstOrDefault();