我正在尝试使用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.
我将非常感谢任何帮助:如何在两台机器上获得图像大小?
答案 0 :(得分:1)
这可能是由于该机器上安装了不同版本的MSHTML引擎。验证版本是否相同。此外,在尝试从元素中读取属性之前,请验证文档是否已完全加载。
那说,你为什么只使用重量级MSHTML控件来读取图像尺寸?为什么不使用免费,轻量级的开源HTML Agility Pack?