无法在html列表中检索li节点

本文关键字:检索 li 节点 列表 html | 更新日期: 2023-09-27 18:26:57

我正在尝试抓取一个html文档,以便从具有以下结构的ul列表中获取值:

<ul id="indicators0" class="connectedIndicators ui-sortable">
  <li id="ind-speed" style="">speed=0.014774</li>
  <li id="ind-speed_01" style="display: list-item;"></li>
  ...
</ul>

通过使用Html敏捷包:,我可以很容易地访问节点"indicators0"

HtmlAgilityPack.HtmlNode node = htmlDocument.DocumentNode.SelectSingleNode("//ul[@id='indicators0']");

但是,任何检索li节点的尝试都无法成功。我正在尝试以下内容:

HtmlAgilityPack.HtmlNode subNode = htmlDocument.DocumentNode.SelectNodes("//ul[@id='indicators0'] //li").FirstOrDefault();

HtmlAgilityPack.HtmlNode subNode = node.Descendants("li").FirstOrDefault();

在这两种情况下都返回空值。欢迎任何帮助。

无法在html列表中检索li节点

你试过了吗。

HtmlAgilityPack.HtmlNode subNode = HtmlDocument.DocumentNode.SelectSingleNode("//ul[@id='indicators0']/li[1]");

当提取这些值时,您将使用xsl向下映射到一个或多个节点,以查找您要查找的项,并且仅查找第一个项。

在第一个例子中,从html中提取整个UL是理所当然的。

另外两个我现在看不出有什么问题,对不起,我很累。

如果我的建议不起作用,你是否进行了调试,以找出要返回的节点是什么?有可能你击中了正确的ul,或者有可能你正在寻找LI,在它们被动态加载之前(我不确定你是否在动态加载任何东西,只是假设)

如果LI的id总是相同,你也可以做的是这个

HtmlAgilityPack.HtmlNode subNode = HtmlDocument.DocumentNode.SelectSingleNode("//li[@id='ind-speed']");

如果它收到了一些东西,那么很有可能有多个ul首先是您在htmlDoc 范围内查找的描述