2016-10-05 5 views
0

私のプロジェクトでWPF Webブラウザを使用していますが、そのページのHTMLをキャッチしようとしています。ここでは同じWPFブラウザコントロールからの動的HTMLの読み込み

private void Window_Loaded(object sender, RoutedEventArgs e) 
{ 
    webBrowser.Navigate("https://www.uptodate.com/contents/lassa-fever/print"); 
} 

private void webBrowser_LoadCompleted(object sender, NavigationEventArgs e) 
{ 
    dynamic doc = webBrowser.Document; 
    var htmlText = doc.documentElement.InnerHtml;   
    MessageBox.Show(htmlText); 
} 

さて、問題のコードはこちらです: メッセージボックスが正しくページの内容を示したが、私は私のコードでは、htmlTextの値を参照する場合には、全体の内容を示していないが、それは示していjavascriptを使用して挿入されたコンテンツを除いて静的に追加されたHTMLコンテンツのみ。

私がここで観察した最も奇妙なことは、さまざまなビジュアライザの異なる出力を表示することです。つまり、テキストビジュアライザを使用してhtmlTextを表示すると、ページの静的コンテンツのみが表示されますが、HTMLビジュアライザを使用して表示されるとき、 HTMLはjavascriptを使用してロードされました。

答えて

0

あなたは、コードの下に試すことができます: -

HtmlElementCollection elems = webBrowser1.Document.GetElementsByTagName("HTML"); 
     if (elems.Count == 1) 
     { 
      elem = elems[0]; 
      string Code = elem.OuterHtml; 
     } 

編集:

ます。また、コードの下に試すことができます - あなたのフィードの

var renderedHtml = doc.GetElementsByTagName("HTML")[0].OuterHtml; 
+0

おかげで戻って私は両方のアプローチを試してみましたそれは動作しませんでした。 最初のアプローチのCode変数とrenderedHtmlは、コード と同じように動作します。つまり、ページのコンテンツを正しく表示しますが、コード内のhtmlTextの値を参照するとコンテンツ全体が表示されませんが、 JavaScriptを使って挿入されたコンテンツを除いて静的に追加されたHTMLコンテンツのみを表示します –

+0

"webBrowser_LoadCompleted"内で5秒間タイマーコントロールを使用し、その中に書かれた現在のコードをタイマー機能で書き込めますか?完全なhtmlを読み込むには数秒しかかかりません。 –

関連する問題