HTMLAgilityPack carica il contenuto AJAX per lo scraping

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

Domanda

Sto cercando di raschiare una pagina web usando HTMLAgilityPack nel progetto web # acs.

Tutte le soluzioni che ho visto per farlo utilizzano un controllo WebBrowser. Tuttavia, da quello che posso determinare, questo è disponibile solo nei progetti WinForms.

Attualmente sto chiamando la pagina richiesta tramite questo codice:

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

Un esempio di codice che ho visto dicendo di usare il controllo WebBrowser:

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

Qualsiasi suggerimento / suggerimento su come afferrare la pagina una volta che AJAX è stato caricato, sarà apprezzato.

Risposta accettata

Sembra che usando HTMLAgilityPack sia possibile solo raschiare il contenuto che viene caricato tramite lo stesso html. Quindi tutto ciò che viene caricato tramite AJAX non sarà visibile in HTMLAgilityPack.

Forse l'opzione più semplice, dove possibile, è utilizzare uno strumento basato su browser come Firebug per determinare l'origine dei dati caricati da AJAX. Quindi manipola direttamente i dati sorgente. Un ulteriore vantaggio di questo potrebbe essere la capacità di raschiare un set di dati più grande.



Related

Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow