HTMLAgilityPack charge le contenu AJAX pour le raclage

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

Question

J'essaie de gratter une page Web à l'aide de HTMLAgilityPack dans un projet webforms.

Toutes les solutions que j'ai vues pour cela utilisent un contrôle WebBrowser. Cependant, d'après ce que je peux déterminer, ceci n'est disponible que dans les projets WinForms.

À l'heure actuelle, j'appelle la page requise via ce code:

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

Un exemple de code que j'ai vu utiliser le contrôle WebBrowser:

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

Toute suggestion ou indication sur la manière de saisir la page une fois AJAX chargé sera appréciée.

Réponse acceptée

Il semble qu'en utilisant HTMLAgilityPack, il est uniquement possible de supprimer le contenu chargé via le code HTML lui-même. Ainsi, tout élément chargé via AJAX ne sera pas visible pour HTMLAgilityPack.

L'option la plus simple - dans la mesure du possible - consiste à utiliser un outil basé sur un navigateur tel que Firebug pour déterminer la source des données chargées par AJAX. Puis manipulez directement les données source. Un avantage supplémentaire de ceci pourrait être la possibilité de gratter un plus grand ensemble de données.




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi