HtmlAgilityPack检查表的数量并找到它们的“标题”

时间:2012-08-03 16:54:05

标签: c# html-agility-pack

我正在尝试从包含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']");

1 个答案:

答案 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();