【问题标题】:HTML Agility Pack issue finding divsHTML Agility Pack 问题查找 div
【发布时间】:2012-06-12 22:12:36
【问题描述】:

我正在尝试提取具有特定类/ID 名称的 div 中的所有内容。我正在使用以下代码:

var webGet = new HtmlWeb();
var document = webGet.Load("http://www.4guysfromrolla.com/articles/011211-1.aspx");

var partOfWebpage = from completeWebpage in document.DocumentNode.Descendants("div")
                             where
                                 completeWebpage.Attributes["class"].Value == "content" &&
                                 completeWebpage.Attributes["class"].Value != null
                             select completeWebpage.InnerHtml;

foreach (var s in partOfWebpage)
{
    textBox1.AppendText(s);
}

我收到 “NullReferenceException 未处理 - 对象引用未设置为对象实例” 错误。

显然它根本找不到 div。当我在 Descendants() 方法中放置“table”而不是“div”时,一切正常,我可以选择一个带有类/id 定义的表。

我做错了什么?


【问题讨论】:

    标签: c# html-agility-pack


    【解决方案1】:

    在取消引用之前尝试检查属性是否存在:

    from completeHomepage in document.DocumentNode.Descendants("div")
    where completeHomepage.Attributes["class"] != null &&
          completeHomepage.Attributes["class"].Value == "content" &&
          completeHomepage.Attributes["class"].Value != null
    select completeHomepage.InnerHtml;
    

    【讨论】:

    • 做到了。太感谢了! :)
    【解决方案2】:

    您可以使用 XPath 按类(如果需要,也可以按 Id)选择 div。

    var results = document.DocumentNode.SelectNodes("//div[@class='content']");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-13
      • 2012-01-07
      • 2011-08-24
      • 1970-01-01
      • 2011-04-20
      • 1970-01-01
      • 2020-01-17
      • 2011-06-12
      相关资源
      最近更新 更多