HTMLAgilityPack carga contenido AJAX para raspar

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

Pregunta

Estoy tratando de raspar una página web usando HTMLAgilityPack en el proyecto ac # webforms.

Todas las soluciones que he visto para hacer esto usan un control WebBrowser. Sin embargo, de lo que puedo determinar, esto solo está disponible en proyectos de WinForms.

En este momento estoy llamando a la página requerida a través de este código:

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

Un ejemplo de código de código que he visto decir que usa el control WebBrowser:

if (this.webBrowser1.Document.GetElementsByTagName("html")[0] != null)
_htmlAgilityPackDocument.LoadHtml(this.webBrowser1.Document.GetElementsByTagName("html")[0].OuterHtml);

Se agradecerán todas las sugerencias / punteros sobre cómo capturar la página una vez que se haya cargado AJAX.

Respuesta aceptada

Parece que al usar HTMLAgilityPack solo es posible raspar el contenido que se carga a través del propio html. Por lo tanto, cualquier cosa cargada a través de AJAX no será visible para HTMLAgilityPack.

Quizás la opción más fácil, donde sea factible, es usar una herramienta basada en navegador como Firebug para determinar la fuente de los datos cargados por AJAX. Luego manipular los datos de origen directamente. Una ventaja adicional de esto podría ser la capacidad de raspar un conjunto de datos más grande.




Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué