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は同じ結果を返します。テストフォルダにはファイルが書き込まれません。しかし、「ソースの表示」ではなく「要素の検査」をクリックするとすべての情報を見ることができます。

HtmlAgilityPackを使ってその行を取得するには?

受け入れられた回答

あなたが探しているデータが、ページの最初のダウンロード後にブラウザ内のjavascript(xhr)を介して読み込まれるため、ソースで見ることができない理由があります。 HtmlAgiligyPackは単なるHTMLパーサーであり、javascriptの実行と追加のリソースの読み込みをサポートしていません。これを行うには他にも方法がありますが、別のツールを使用する必要があります。これはおそらく開始するには良い場所です:

DOMをロードし、.Netを使用してサーバーサイドでjavascriptを実行する




ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ