HtmlAgilityPack을 사용하여 웹 페이지의 요소가 있는지 확인하십시오.

c# dom html-agility-pack

문제

http://google.com 사이트 에 있으며 페이지에 id="hplogo" 요소가 있는지 확인하고 싶습니다 (Google 로고).

HtmlAgilityPack을 사용하고 싶습니다. 그래서 다음과 같이 씁니다 :

    HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
    doc.LoadHtml("http://google.com");
    var foo = (from bar in doc.DocumentNode.DescendantNodes()
               where bar.GetAttributeValue("id", null) == "hplogo"
               select bar).FirstOrDefault();
    if (foo == null)
    {
        HasSucceeded = 1;
        MessageBox.Show("not there");
    }
    else
    {
        MessageBox.Show("it's there");
    }
    return HasSucceeded;
}

그것이 거기에 있기 때문에 "그것은 거기에있다"라는 메시지를 반환해야합니다. 그러나 그렇지 않습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

수락 된 답변

메서드 LoadHtml(html) 은 구문 분석 할 HTML 내용이 들어있는 문자열을로드합니다. 이것은로드 할 수있는 리소스의 URL이 아닙니다. 그래서 문자열 "http://google.com" 로드하고 로고를 찾으려고합니다. 물론 결과가 나오지 않습니다 .

WebClient 를 사용하여 리소스 컨텐트를 다운로드 할 수 있습니다.

WebClient client = new WebClient();
string html = client.DownloadString("http://google.com");
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(html);



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.