【问题标题】:HTML Agility Pack fails to find the node using XPathHTML Agility Pack 无法使用 XPath 找到节点
【发布时间】:2019-07-11 04:12:14
【问题描述】:

我正在尝试在网页https://blogs.msdn.microsoft.com/page/2/ 中查找页码为200 的节点。我从 chrome 得到的 XPath 是//*[@id="site-main"]/nav/div/a[4]。但是当我尝试获取节点时,HTML Agility Pack 返回 null。下面是示例代码。

string url = "https://blogs.msdn.microsoft.com/page/2/";
var doc = web.Load(url);
HtmlNode node = doc.DocumentNode.SelectSingleNode("//*[@id=\"site - main\"]/nav/div/a[4]");

如何获取节点以及如何解决 XPath 的此类问题?

【问题讨论】:

  • 您的代码 (site - main) 中的 id 上的连字符前后有空格,而不是在原始路径上。
  • 感谢@Anderson Pimentel。这似乎是 Visual Studio 编辑器的问题。如果是直接复制粘贴在双引号内,则 Visual Studio 编辑器正在重新格式化。粘贴后必须添加双引号或手动修复它。希望有一个选项来控制重新格式化。
  • 我认为在 SO 中发帖有问题。很高兴这是解决方案!我将发布作为答案,因此您可以接受。

标签: .net xpath html-agility-pack


【解决方案1】:

site-main 的连字符前后有一个空格。当将该字符串复制粘贴在已经存在的双引号之间时,Visual Studio 会自动添加这些空格。解决方案是在手动粘贴或修复后添加引号。

添加了 Anderson Pimental 的评论作为答案并对此表示感谢。考虑删除此问题但保留此问题,因为其他人也可能在 Visual Studio 中遇到此问题。

【讨论】:

    【解决方案2】:

    在您的代码 (site - main) 中的 id 上的连字符前后有空格,而不是在原始路径上。

    【讨论】:

    • 接受了安德森的回答。有关问题的根本原因,请参阅我的回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-01
    • 2011-04-20
    • 2018-06-13
    • 1970-01-01
    • 2011-11-08
    • 1970-01-01
    • 2012-07-12
    相关资源
    最近更新 更多