如何使用HtmlAgilityPack獲取動態加載的內容

c# html-agility-pack

我試圖使用HtmlAgilityPack從我們的中央銀行提取一些HTML。

是一個每週帳戶。聲明的後半部分“根據1972年孟加拉國銀行令......的帳戶......”包含一行“A.金幣和金條”。

我試過以下代碼 -

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");
    }
}

如果我右鍵單擊頁面並單擊“查看源代碼”,我看不到“A.金幣和金塊”這一行。 dat.DocumentNode.InnerHtml返回相同的內容,因此在測試文件夾中沒有寫入文件。但是,如果單擊“Inspect element”而不是“View source”,我可以看到所有信息。

如何使用HtmlAgilityPack獲取該行?

一般承認的答案

您無法在源代碼中看到它的原因是因為您正在尋找的數據是在首次下載頁面後通過瀏覽器中的javascript(xhr)加載的。 HtmlAgiligyPack只是一個HTML解析器,不支持運行javascript和加載其他資源。還有其他方法可以做到這一點,但您需要使用其他工具。這可能是一個很好的起點:

加載DOM並使用.Net執行javascript,服務器端



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow