如何使用HtmlAgilityPack获取动态加载的内容

时间:2017-02-01 15:04:52

标签: c# html-agility-pack

我试图使用HtmlAgilityPack从我们的中央银行提取一些HTML。

Here是一个每周帐户。声明的下半部分"根据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");
    }
}

如果我右键点击页面并点击&#34;查看来源&#34;我看不到这条线&#34; A.金币和金条&#34;。 dat.DocumentNode.InnerHtml返回相同的内容,因此没有文件写入测试文件夹。但是如果我点击&#34; Inspect element&#34;我可以看到所有信息。而不是&#34;查看来源&#34;。

如何使用HtmlAgilityPack获取该行?

1 个答案:

答案 0 :(得分:1)

您无法在源代码中看到它的原因是因为您首先下载页面后,您在浏览器中通过javascript(xhr)加载了您要查找的数据。 HtmlAgiligyPack只是一个HTML解析器,不支持运行javascript和加载其他资源。还有其他方法可以做到这一点,但您需要使用其他工具。这可能是一个很好的起点:

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