Ich habe versucht, etwas HTML von unserer Zentralbank mit HtmlAgilityPack zu extrahieren.
Hier 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 es 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 mit der rechten Maustaste auf die Seite klicke und auf "Quelle anzeigen" klicke, sehe ich die Zeile "A. Gold Coin and Bullion" nicht. dat.DocumentNode.InnerHtml
gibt dasselbe zurück, daher wird im dat.DocumentNode.InnerHtml
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?
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:
Laden Sie ein DOM und führen Sie Javascript serverseitig mit .Net aus