无法在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();
在这两种情况下都返回空值。欢迎任何帮助。
你试过了吗。
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 范围内查找的描述