임 # 웹 폼 프로젝트에서 HTMLAgilityPack을 사용하여 웹 페이지를 긁어 내려고했습니다.
이를 위해 필자가 보았던 모든 솔루션은 WebBrowser 컨트롤을 사용합니다. 그러나, 내가 결정할 수있는, 이것은 WinForms 프로젝트에서만 사용할 수 있습니다.
현재이 코드를 통해 필요한 페이지를 호출하는 중 :
var getHtmlWeb = new HtmlWeb();
var document = getHtmlWeb.Load(inputUri);
HtmlAgilityPack.HtmlNodeCollection nodes = document.DocumentNode.SelectNodes("//div[@class=\"nav\"]");
WebBrowser 컨트롤을 사용하는 방법을 보았습니다.
if (this.webBrowser1.Document.GetElementsByTagName("html")[0] != null)
_htmlAgilityPackDocument.LoadHtml(this.webBrowser1.Document.GetElementsByTagName("html")[0].OuterHtml);
일단 AJAX가로드되면 페이지를 잡는 방법에 대한 모든 제안 / 포인터를 이해할 수 있습니다.
HTMLAgilityPack을 사용하면 html 자체를 통해로드 된 내용을 다칠 수 있습니다. 따라서 AJAX를 통해로드 된 내용은 HTMLAgilityPack에 표시되지 않습니다.
가능한 가장 쉬운 옵션은 Firebug와 같은 브라우저 기반 도구를 사용하여 AJAX가로드하는 데이터 소스를 결정하는 것입니다. 그런 다음 소스 데이터를 직접 조작하십시오. 이것의 또 다른 장점은 더 큰 데이터 세트를 긁어 낼 수 있다는 것입니다.