스크래핑을위한 HTMLAgilityPack로드 AJAX 컨텐츠

ajax asp.net c# html-agility-pack winforms

문제

임 # 웹 폼 프로젝트에서 HTMLAgilityPack을 사용하여 웹 페이지를 긁어 내려고했습니다.

이를 위해 필자가 보았던 모든 솔루션은 WebBrowser 컨트롤을 사용합니다. 그러나, 내가 결정할 수있는, 이것은 WinForms 프로젝트에서만 사용할 수 있습니다.

현재이 코드를 통해 필요한 페이지를 호출하는 중 :

var getHtmlWeb = new HtmlWeb();
var document = getHtmlWeb.Load(inputUri);
HtmlAgilityPack.HtmlNodeCollection nodes = document.DocumentNode.SelectNodes("//div[@class=\"nav\"]");

WebBrowser 컨트롤을 사용하는 방법을 보았습니다.

var getHtmlWeb = new HtmlWeb();
var document = getHtmlWeb.Load(inputUri);
HtmlAgilityPack.HtmlNodeCollection nodes = document.DocumentNode.SelectNodes("//div[@class=\"nav\"]");

일단 AJAX가로드되면 페이지를 잡는 방법에 대한 모든 제안 / 포인터를 이해할 수 있습니다.

수락 된 답변

HTMLAgilityPack을 사용하면 html 자체를 통해로드 된 내용을 다칠 수 있습니다. 따라서 AJAX를 통해로드 된 내용은 HTMLAgilityPack에 표시되지 않습니다.

가능한 가장 쉬운 옵션은 Firebug와 같은 브라우저 기반 도구를 사용하여 AJAX가로드하는 데이터 소스를 결정하는 것입니다. 그런 다음 소스 데이터를 직접 조작하십시오. 이것의 또 다른 장점은 더 큰 데이터 세트를 긁어 낼 수 있다는 것입니다.




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