div가있는 경우 HtmlAgilityPack

c# html-agility-pack

문제

html Agility Pack을 사용하여 div와 특정 클래스 및 ID가 있는지 확인합니다.

 string target = "http://192.168.3.230/index.htm";
 WebClient client = new WebClient();
 string html = client.DownloadString(target);
 HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
 doc.LoadHtml(html);

 if (doc.DocumentNode.SelectSingleNode("//div[@id='bit0' and @class='rledoff']") != null){
      //actions in here
 }

 else if (doc.DocumentNode.SelectSingleNode("//div[@id='bit0' and @class='rledon']") != null)
 {
      //actions in here
 }

현재 else if는 true 여야하지만 if 문에서 액션을 수행하고 있습니다. 내가했을 때이 작업을 올바르게 보았습니다.

doc.Load("c:\\somelocaldest\\page.htm");

내가 사이트의 로컬 저장된 파일 대신 실제 사이트에서 시도하면 ID가 정확하다는 것을 알게되고 클래스는 무시됩니다. 무엇이 로컬 파일과 외부 사이트 / 장치에서 HTML을 가져 오는 것과 다른 방식으로 동작 할 수 있습니까?

인기 답변

무엇보다도 먼저이 작업을 수행 할 것을 제안합니다. 웹 클라이언트보다 빠릅니다.

HtmlWeb web = new HtmlWeb();
HtmlDocument doc = web.Load(target);

로컬 hmtl 파일에서 작동하고 html이 서버에있을 때 작동하지 않는다고 말하면 다음을 수행하십시오.

HtmlWeb web = new HtmlWeb();
HtmlDocument doc = web.Load(target);

htmlweb (또는 webclient)을 사용하여 다운로드 할 때 페이지의 소스 코드가 다른 경우가 있으므로이 새로운 html 파일을 사용하여 xpath를 다시 작성하십시오.




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