Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# “之间的区别”;IE9调试工具“;HTML输出和我通过C获得的网页源HTML#_C#_Html_Internet Explorer - Fatal编程技术网

C# “之间的区别”;IE9调试工具“;HTML输出和我通过C获得的网页源HTML#

C# “之间的区别”;IE9调试工具“;HTML输出和我通过C获得的网页源HTML#,c#,html,internet-explorer,C#,Html,Internet Explorer,我不是第一次问这样的问题。 我有一个沃尔沃汽车零件目录,它作为本地数据库的客户端应用程序实现,仅在IE8/9中工作。我需要找到并获得一些显示在IE中的位置 以下是IE输出的一个示例: 只是一张桌子而已 以下是我在IE9调试工具中看到的内容: IE向我展示了一个页面的完整布局,在这里我可以看到一个目标表和包含需要获取的数据的行 我编写了一个简单的类,它应该遍历所有IE选项卡并从目标页面获取HTML: using System.Globalization; using System.Text.Re

我不是第一次问这样的问题。 我有一个沃尔沃汽车零件目录,它作为本地数据库的客户端应用程序实现,仅在IE8/9中工作。我需要找到并获得一些显示在IE中的位置

以下是IE输出的一个示例: 只是一张桌子而已

以下是我在IE9调试工具中看到的内容:

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调试工具中看到的东西


谢谢。

您可以在“
Script
”选项卡中获取原始源代码(服务器发送的源代码)(这适用于我的IE8和IE10)


如果您不使用AJAX,我认为您可以右键单击页面并选择
displaysource
选项。

在IE中,在所有onload()javascript出现后,您会看到结果页面。在C#中,在任何onload()javascript出现之前,您会看到页面。尝试在WebView中呈现页面,然后对其进行解析。您的意思是,在运行一些JavaScript功能后,您看到服务器发送的HTML与浏览器从该HTML构建的DOM之间存在差异吗?这是正确的,它们有所不同。你真正的问题是什么,你想解决什么问题?OP问他为什么没有从检索页面的C#应用程序中看到与他使用IE调试工具时看到的相同的标记。查看源代码不在其中。这不是因为HTML选项卡只显示IE解释的DOM,而不是它背后的真实源代码吗?我认为这个显示只是一个重建的HTML,内存中有节点(ext:qtip attibute从这个视图中消失了,但仍然存在于实际代码中)。C#app获得的html是真实的代码,而不是此视图中重建的html…当您使用此视图中的
Save
选项时,您就有了
啊,我知道您现在要做什么了。你是说视图源应该是服务器返回的,而HTML选项卡显示的是IE当前解释的DOM。如果你编辑答案使其更清楚,我将撤消我的否决票。(我不能不编辑就撤销它。)我认为你的答案只是问题的一部分。我强烈怀疑这个问题与C#请求中没有运行Javascript有关。IE解释的DOM将反映Javascript所做的任何更改。