2017-02-01 7 views
2

Ich habe versucht, einige HTML aus unserer Zentralbank mit HtmlAgilityPack zu extrahieren.So erhalten Sie dynamisch geladenen Inhalt mit HtmlAgilityPack

Here ist ein Wochenkonto. Zweite Hälfte der Erklärung "Ein Konto gemäß der Bangladesh Bank Order 1972 ....." enthält eine Zeile "A. Goldmünze und Bullion".

Ich habe mit folgendem Code versucht -

var get = new HtmlWeb(); 
for (int i = 1; i < 8284; i++) 
{ 
    var dat = get.Load("https://www.bb.org.bd/pub/weekly/staffair/state_affairs.php?prId=" + i); 
    var htm = dat.DocumentNode.InnerHtml; 
    if (htm.Contains("Gold Coin and Bullion")) 
    { 
     File.WriteAllText(@"C:\Test\" + i + ".txt", htm); 
     Console.WriteLine(i + " written"); 
    } 
} 

Wenn ich rechts auf der Seite klicken und klicken Sie auf „View Source“ Ich sehe nicht, die Zeile „A. Goldmünze und Bullion“. dat.DocumentNode.InnerHtml gibt dasselbe zurück, daher wird im Testordner keine Datei geschrieben. Aber ich kann alle Informationen sehen, wenn ich auf "Element prüfen" anstelle von "Quelle anzeigen" klicke.

Wie bekomme ich diese Zeile mit HtmlAgilityPack?

Antwort

1

Der Grund, warum Sie es nicht in der Quelle sehen können, ist, weil die gesuchten Daten nach dem ersten Download der Seite über Javascript (xhr) in Ihrem Browser geladen werden. Das HtmlAgiligyPack ist nur ein HTML-Parser und unterstützt das Ausführen von JavaScript und das Laden zusätzlicher Ressourcen nicht. Es gibt andere Möglichkeiten, dies zu tun, aber Sie müssten ein anderes Werkzeug verwenden. Dies ist wahrscheinlich ein guter Anfang:

Load a DOM and Execute javascript, server side, with .Net

+0

Selen zusammen mit PhantomJS löst das Problem, aber es meldet sich einige unerwünschte Informationen im Konsolenfenster zB. '[INFO - 2017-02-03T17: 45: 00.492Z] GhostDriver - Main - läuft auf Port ....'. Ich habe auch versucht mit 'SimpleBrowser.WebDriver', aber es verhält sich wie 'HtmlAgilityPack'. Gibt es einen Ausweg, um alle Informationen mit 'SimpleBrowser.WebDriver' zu erhalten? –

Verwandte Themen