如何使用带有MSHTML的C#在随机页面上获取图像大小?

时间:2011-03-08 20:21:44

标签: c# .net mshtml microsoft.mshtml

我正在尝试使用mshtml检索页面上的图像。在2台不同的机器(Win7-64位)上工作会给我不同的结果。其中一台机器工作得很好。但是,第二个是无法读取图像的宽度/高度属性。所有的高度/宽度都是零。

public JsonResult GetHtml(string url)
{
    var client = new WebClient();
    var htmlCode = client.DownloadString(url);
    var htmlDocument = new mshtml.HTMLDocument() as mshtml.IHTMLDocument2;
    htmlDocument.write(htmlCode);
    var htmlImages = htmlDocument.body.all.tags("img");
    var listImages = new List<HtmlImage>();
    foreach (var htmlImage in htmlImages)
    {
        Console.Out.WriteLine("Src: {0}", htmlImage.src);
        Console.Out.WriteLine("Width: {0}", htmlImage.width);
        Console.Out.WriteLine("Height: {0}", htmlImage.height);
    }
}

运行正常的机器使用MSDN Visual Studio 2010.没有给我正确结果的机器使用Visual Studio Express Edition 2010.

我将非常感谢任何帮助:如何在两台机器上获得图像大小?

1 个答案:

答案 0 :(得分:1)

这可能是由于该机器上安装了不同版本的MSHTML引擎。验证版本是否相同。此外,在尝试从元素中读取属性之前,请验证文档是否已完全加载。

那说,你为什么只使用重量级MSHTML控件来读取图像尺寸?为什么不使用免费,轻量级的开源HTML Agility Pack