2013-06-19 50 views
1

我不是第一次遇到這樣的問題。 我有一個沃爾沃汽車零部件目錄,作爲客戶端應用程序實現到本地數據庫,並且只能在IE8/9中運行。我需要找到並獲得一些位置顯示在IE中。我通過C#獲得的「IE9調試工具」HTML輸出和網頁源代碼HTML之間的區別

下面是一個IE輸出的例子: IE output sample http://s019.radikal.ru/i614/1306/f0/1e6fa59dc2ba.png 這只是一個表,沒有更多。

這裏就是我在IE9的調試工具,請參見: IE debug tools output http://s017.radikal.ru/i408/1306/0b/3bb98443cd9f.png

IE顯示我的頁面中,我可以看到一個目標表和行與我需要獲得數據的完整佈局。

我寫了一個簡單的類,應該通過所有IE選項卡步行路程,距離目標頁面HTML內容:

using System.Globalization; 
using System.Text.RegularExpressions; 
using SHDocVw; 

namespace WebpageHtmlMiner 
{ 
    static class HtmlMiner 
    {  
     public static string GetWebpageHtml(string uriPattern) 
     { 
      var uriRegexPattern = uriPattern; 
      var regex = new Regex(uriRegexPattern); 
      var shellWindows = new ShellWindows(); 

      InternetExplorer internetExplorer = null; 

      foreach (InternetExplorer ie in shellWindows) 
      { 
       Match match = regex.Match(ie.LocationURL); 
       if (!string.IsNullOrEmpty(match.Value)) 
       { 
        internetExplorer = ie; 
        break; 
       } 
      } 

      if (internetExplorer == null) 
      { 
       return "Target page is not opened in IE"; 
      } 

      var mshtmlDocument = (mshtml.IHTMLDocument2)internetExplorer.Document; 
      var webpageHtml = mshtmlDocument.body.parentElement.outerHTML.ToString(CultureInfo.InvariantCulture); 

      return webpageHtml; //profit 
     } 
    } 
} 

這似乎很好地工作,但不是我在IE瀏覽器的調試工具,看到我得到HTML代碼大量的javascript函數和目標表中沒有數據。

有沒有什麼辦法可以得到我在IE調試工具中看到的內容?

謝謝。

+0

在IE中,您會在所有onload()javascript發生後看到結果頁面。在C#中,您會在發生任何onload()javascript之前看到該頁面。嘗試在WebView中渲染頁面,然後解析它。 –

+0

您的意思是在運行JavaScript功能之後,您發現服務器發送的HTML與HTML構建的瀏覽器之間存在差異?這是正確的,他們不同。你真正的問題是什麼,你想解決什麼問題? – CodeCaster

回答

-1

您可以在「Script」選項卡中獲得原始源(由服務器發送的源)(這適用於我的IE8和IE10)。

如果您不使用AJAX,我認爲您可以在頁面上單擊鼠標右鍵並選擇Display Souce選項。

+0

OP在問他爲什麼沒有從C#應用程序中看到相同的標記,這些標記用於檢索當他使用IE調試工具時看到的頁面。查看源代碼不會進入它。 –

+0

是不是因爲HTML選項卡只顯示由IE解釋的DOM而不是它背後的真實源代碼? 我認爲這個顯示只是一個重建的HTML,內存中的節點(我得到了ext:qtip attibute從這個視圖中消失,但仍然存在於真實代碼中)。 C#應用程序獲得的html是真正的代碼,而不是從這個視圖重建的HTML ... – orion78fr

+0

當你使用這個視圖的'Save'選項時,你有'<! - 從url = ***保存** - > <! - 由F12開發人員工具生成。這可能不是原始源文件的準確表示 - >' – orion78fr

相關問題