2016-10-05 27 views
0

我在我的項目中使用WPF webbrowser,並試圖捕獲頁面的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); 
} 

現在的問題代碼在這裏是: MessageBox的正確顯示頁面的內容,但如果我指的htmlText的價值在我的代碼並不顯示全部內容,但它顯示只有靜態添加的HTML內容不包括使用JavaScript插入的內容。

我在這裏觀察到的最奇怪的事情是htmlText爲不同的可視化器顯示不同的輸出,即當使用文本可視化器查看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

您可以嘗試1件事,在「webBrowser_LoadCompleted」內使用5秒鐘內的定時器控件,並將代碼寫入其中,並將其寫入定時器函數中。手段給它幾秒鐘加載完整的HTML。 –