HTML 민첩성 팩 문제 div 찾기

c# html-agility-pack

문제

내가 div 내에서 특정 클래스 / ID 이름으로 상주하는 모든 것을 추출하려고합니다. 다음 코드를 사용하고 있습니다 :

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 정의로 원하는 테이블을 선택할 수 있습니다.

내가 도대체 ​​뭘 잘못하고있는 겁니까?


수락 된 답변

참조를 역 참조하기 전에 속성이 존재하는지 확인하십시오.

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는 합법적입니까? 예, 이유를 알아보십시오.