我不是第一次遇到這樣的問題。 我有一個沃爾沃汽車零部件目錄,作爲客戶端應用程序實現到本地數據庫,並且只能在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調試工具中看到的內容?
謝謝。
在IE中,您會在所有onload()javascript發生後看到結果頁面。在C#中,您會在發生任何onload()javascript之前看到該頁面。嘗試在WebView中渲染頁面,然後解析它。 –
您的意思是在運行JavaScript功能之後,您發現服務器發送的HTML與HTML構建的瀏覽器之間存在差異?這是正確的,他們不同。你真正的問題是什麼,你想解決什麼問題? – CodeCaster