如何将图像从mshtml.htmlimg获取到硬盘

时间:2012-01-31 10:04:02

标签: vb.net download ihtmlimgelement

不使用API​​?

我知道有几种方法。

我顺便使用mshtml库,这比webbrowser控件好。我正在有效地自动化Internet Explorer。

基本上我更喜欢直接拍摄图像而不必知道htmlimg的URL并下载它。

我知道我可以从image元素中获取URL并使用webclient下载它。 图片会根据Cookie和IP 而变化。所以不会这样做。

我希望htmlimg元素显示的确切图像是存储的图像。

基本上好像有人正在拍摄屏幕上显示内容的本地屏幕截图。

1 个答案:

答案 0 :(得分:1)

这里有一个旧解决方案:

http://p2p.wrox.com/c/42780-mshtml-how-get-images.html#post169674

这些天你可能想查看Html Agility Pack:

http://htmlagilitypack.codeplex.com/

然而,文件并不完美;所以这段代码可能会有所帮助:

HtmlDocument htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(html);

// You can also load a web page by utilising WebClient and loading in the stream - use one of the htmlDoc.Load() overloads

var body = htmlDoc.DocumentNode.Descendants("body").FirstOrDefault();

foreach (var img in body.Descendants("img"))
{
    var fileUrl = img.Attributes["src"].Value;
    var localFile = @"c:\localpath\tofile.jpg";

    // Download the image using WebClient:
    using (WebClient client = new WebClient())
    {
        client.DownloadFile("fileUrl", localFile);
    }
}