HTMLAgilityPack XPath表达式不提取所有节点

时间:2012-07-09 17:37:24

标签: c# html-agility-pack

范围 我正在尝试解析this page。对于那些不熟悉葡萄牙语的人,本页面包含某个课程(大学课程)的所有科目,按“学期”分组。

所以,每当你看到像这样的“7ºPeríodoIdeal”这样的东西时,你就能理解为“主题 从第7学期开始“。

问题我正在使用XPath表达式从包含这些表行的表中获取所有表行。

XPath Used : //table[@cellspacing=2]//tr

C# Statement : htmlMap.DocumentNode.SelectNodes("//table[@cellspacing=2]//tr");

此C#语句收到的HtmlNodeCollection仅包含表格行节点,直到具有此文本EAD0648 Gerência de Produtos / Serviços e Mercados的表格节点,紧接着5º Período Ideal之后的表格。

这个XPath“有效”,但我得到了所有tr's(正如预期的那样),这不是我想要的。

//tr

为什么XPath不会在此节点之后检索所有节点?

是否有任何节点上限被检索? 我错过了什么吗?

提前致谢

1 个答案:

答案 0 :(得分:3)

过去我遇到过这种情况,如果表格形式不完善,那么就会发生这样的问题。我快速浏览了页面的HTML,看到了可能出现的问题,在第2785行有一个</tr>然后没有开头<tr>行2796有另一个{{1} }。

我承认我没有进行深度验证来检查,但只是通过查看它我无法匹配开头</tr>。我立即检查了这一点,因为正如我所提到的,我遇到了与表格格式错误的页面存在的确切问题。