gpt4 book ai didi

c# - 无法检索 html 列表中的 li 节点

转载 作者:太空宇宙 更新时间:2023-11-03 15:49:41 24 4
gpt4 key购买 nike

我正在尝试抓取一个 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 Agility Pack 跟随网络中的众多示例轻松到达节点“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();

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

最佳答案

你试过吗

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

当提取这些值时,您正在使用 xsl 向下映射到一个或多个节点以找到您正在寻找的项目,并且只是第一个。

在第一个中,理所当然地,将整个 UL 从 html 中拉出。

另外 2 个我现在看不出有什么问题,抱歉,我很累。

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

如果 LI 的 id 始终相同,您还可以这样做

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

如果它接收到一些东西,那么很有可能你有多个 ul,第一个是你在 htmlDoc 范围内寻找的描述

关于c# - 无法检索 html 列表中的 li 节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26444157/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com