Как получить образ из mshtml.htmlimg на жесткий диск

Без использования API?

Я знаю, что есть несколько способов.

Кстати, я использую библиотеку mshtml, которая лучше, чем веб-браузер. Я эффективно автоматизирую Internet Explorer прямо.

В основном я предпочитаю способ сделать изображение прямым, не зная URL-адреса htmlimg и не загрузив его.

Я знаю, что могу взять URL из элемента изображения и загрузить его с веб-клиентом. Изображение меняется в зависимости от куки и IP. Так что это не подойдет.

Я хочу, чтобы точные изображения, отображаемые элементом htmlimg, были сохранены.

По сути, как будто кто-то делает локальный скриншот того, что появляется на экране.

1 ответ

Здесь есть старое решение:

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

Хотя в эти дни вы, возможно, захотите проверить 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);
    }
}
Другие вопросы по тегам