1

特定のクラス/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」を入れると、すべてが正常に機能し、クラス/ID 定義を使用して選択したテーブルを選択できます。

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


4

2 に答える 2

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;
于 2012-06-12T22:19:26.860 に答える
0

XPath を使用して、div をクラスごと (または必要に応じて ID ごと) に選択できます。

var results = document.DocumentNode.SelectNodes("//div[@class='content']");
于 2012-06-12T22:20:19.780 に答える