2012-01-31 13 views
11

APIを使用しないでください?mshtml.htmlimgからハードディスクに画像を取り込む方法

私はいくつかの方法があることを知っています。

私はmshtmlライブラリを使用しています。これはwebbrowserコントロールより優れています。私は効果的にインターネットエクスプローラをストレートに自動化しています。

基本的に、私はhtmlimgのURLを知っていなくてもイメージを真っ直ぐに取ってダウンロードする方法を好みます。

イメージ要素からURLを取得し、webclientを使用してダウンロードすることができます。 クッキーとIPによってイメージが変わります。そのためになりません。

私は、htmlimg要素によって表示される正確なイメージを格納したいものにしたいと思います。

基本的に、画面に表示されるもののローカルスクリーンショットを撮っているかのように。

答えて

1

このため、古いソリューションはここにあります:

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

これらの日は、おそらくHtmlの敏捷性パックをチェックアウトしたいのに:

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); 
    } 
} 
+0

解決方法は、URLを知っていることと直接ダウンロードしているかどうかによって決まります。画像はURLだけでなく、Cookieやプロキシ情報にも依存します。私はWebクライアントにプロキシとクッキーの情報を模倣することができますが、それは複雑です。 –

関連する問題