2

そのため、運転中にお気に入りのラジオ局が知らない曲を流しているという問題に遭遇しました。演奏した曲のリストを表示するページはありません。ただし、サイトには「現在再生中」セクションがあり、現在再生しているものと誰が再生しているかを示しています. そこで、サイトを 2 分ごとにポーリングして曲の名前とアーティストを取得する小さなプログラムを作成しようとしています。Chrome 開発ツールを使用すると、ソース内の曲のタイトルとアーティストを確認できます。しかし、ページのソースを表示しても表示されません。彼らはJavaScriptを使用してその情報を表示しています。私は次のことを試しました:

private void button1_Click(object sender, EventArgs e)
{
    webBrowser1.Navigate(@"http://www.thebuzz.com/main.html");

    webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted);
}

private void webBrowser1_DocumentCompleted(object sender,
                                 WebBrowserDocumentCompletedEventArgs e)
{
    do
    {
         // Do nothing while we wait for the page to load
    }
    while (webBrowser1.ReadyState == WebBrowserReadyState.Loading);

    var test = webBrowser1.DocumentText;
    textBox1.Text = test.ToString();
}

基本的に、私はそれをにロードし、WebBrowserこの方法でソースを取得しようとしています。しかし、javascript を実行した後もまだその部分を取得できません。事後にレンダリングされた HTML を実際に取得する方法はありますか?

編集

WebBrowserまた、スクリプトの実行を許可する方法はありますか? 実行を許可するかどうかを尋ねるポップアップが表示されます。私はそれらを抑制したくありません。実行する必要があります。

4

1 に答える 1

7

Jay Tomtenがコメントで述べたように、問題の原因ではなく結果を修正しようとしています。問題の原因は、Javascript を使用してページのその部分を更新していることです。Javascript に更新を行わせてから、それが書いた内容を読むことでこれを回避する代わりに、Javascript がどこから情報を取得しているか、同じ場所に移動できるかどうかを自問してください。Fiddlerや Chrome の開発コンソールなど、Web トラフィックを確認できるものを開きます。POST 呼び出しに注意してください。それらの 1 つは、ページ上の Javascript が現在の曲を取得する AJAX 要求である可能性があります。URL をメモし、呼び出しを調べて、送信されるパラメーターと返されるデータを確認します。ポストマンを使用できますまたは、POST リクエストを組み立てて、そのサイトの Javascript がどのようにデータを取得しているかを調べてから、その URL への独自の呼び出しを行い、返されたものを解析するための小さなコードを記述します。

于 2013-02-12T15:19:44.623 に答える