gpt4 book ai didi

c# - SelectSingleNode 在 foreach 上返回错误的结果

转载 作者:太空狗 更新时间:2023-10-29 21:06:02 24 4
gpt4 key购买 nike

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(content);

var nodes = doc.DocumentNode.SelectNodes("//div[@class=\"noprint res\"]/div");
if (nodes != null)
{
foreach (HtmlNode data in nodes)
{
// Works but not what I want
MessageBox.Show(data.InnerHtml);

// Should work ? but does not ?
MessageBox.Show(data.SelectSingleNode("//span[@class=\"pp-place-title\"]").InnerText);
}
}

我正在尝试解析 HTML 的结果,即 foreach 的初始节点,它按预期工作,并为我提供了 10 个符合我需要的项目的结果。

当我进入 foreach 时,如果我输出数据项的内部 html,它会显示正确的数据,但如果我输出 SelectSingleNode,它将始终显示来自 foreach 的第一项的数据,是正常行为还是我做错了什么?

为了解决这个问题,我必须在 foreach 中为每个数据项创建一个新的 html,如下所示:

HtmlAgilityPack.HtmlDocument innerDoc = new HtmlAgilityPack.HtmlDocument();
innerDoc.LoadHtml(data.InnerHtml);

// Select what I need
MessageBox.Show(innerDoc.DocumentNode.SelectSingleNode("//span[@class=\"pp-place-title\"]").InnerText);

然后我得到正确的每个项目数据。

我试图从中获取数据的页面是 http://maps.google.com/maps?q=consulting+loc:+US如果你想尝试看看自己会发生什么。

基本上,我正在阅读左侧栏中的公司名称,并且发生了上述情况。

最佳答案

通过以 // 开始您的 XPath 表达式,您将在包含 data 节点的整个文档中进行搜索。

您应该能够使用 ".//[...]" 仅检查 data 中的节点。

关于c# - SelectSingleNode 在 foreach 上返回错误的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10598986/

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