HTMLアジリティパックの問題

c# html-agility-pack

質問

私は特定のクラス/ 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()メソッドに "div"の代わりに "table"を置くと、これまでどおりに動作し、class / id定義で自分のテーブルを選ぶことができます。

私は間違って何をしていますか?


受け入れられた回答

逆参照する前に属性が存在するかどうかを調べてみてください:

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;

人気のある回答

あなたはクラスごとにdivを選択するためにXPathを使うことができます。

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



ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ