【问题标题】:nested div innertext returns Object reference not set to an instance of an object in HtmlAgilitypack嵌套的 div 内部文本返回未设置为 HtmlAgilitypack 中对象实例的对象引用
【发布时间】:2016-01-17 06:11:15
【问题描述】:

我正在尝试使用HtmlAgilitypack.my html 代码获取嵌套 div 的值,如下所示:

这是我的代码:

        var val = resultat1.DocumentNode.SelectSingleNode("//div[@class='journal-content-article']/div[@class='news_page max']/div[@class='news_page_wrapper']/div[@class='news_page_content']/div[@class='news_content']/div[@class='news_content_container']").InnerText;

我需要news_content_container 的内文,但是这行代码返回Object reference not set to an instance of an object

这会返回错误:

        var val = resultat1.DocumentNode.SelectSingleNode("//div[@class='journal-content-article']/div[@class='news_page max']").InnerText;

这返回值但不是预期值:

        var val = resultat1.DocumentNode.SelectSingleNode("//div[@class='journal-content-article']").InnerText;

【问题讨论】:

  • 对象引用未设置错误显然是因为 SelectSingleNode 返回 null 并且您尝试获取 InnerText 属性。您应该尝试逐步选择元素以找到问题。
  • @MehrzadChehraz 是的,你是对的,但我使用 xpath 来获取元素值
  • Okey,但是你需要通过尝试逐步选择元素来调试,以找到 SelectSingleNode 返回 null 的位置。可能是拼写错误或其他问题。
  • 我更新了帖子,正如我所说的第二个 div 返回空引用,我的问题是为什么?
  • downvoter>>>>评论

标签: c# html asp.net html-agility-pack html-parser


【解决方案1】:

很多时候页面的 HTML 内容格式不正确。使用浏览器进行检查不会显示从服务器接收到的实际 HTML。您可以在检查器的Source 选项卡中找到实际的 HTML。

在将 HTML 传递给 HtmlAgilitypack 之前,您需要修复格式不正确的 HTML。这是a site you can use(您可以通过向站点发送HTTP Post 并从响应中获取“精美的html”来使用)

【讨论】:

    猜你喜欢
    • 2013-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-02
    • 1970-01-01
    • 2018-02-17
    • 2021-10-15
    • 2011-08-10
    相关资源
    最近更新 更多