2012-01-31 33 views
11

Nếu không sử dụng API?Cách tải hình ảnh từ mshtml.htmlimg vào đĩa cứng

Tôi biết có một số cách.

Tôi đang sử dụng thư viện mshtml bằng cách này, điều này tốt hơn kiểm soát trình duyệt web. Tôi đang tự động hóa internet explorer một cách hiệu quả.

Về cơ bản, tôi thích cách chụp ảnh thẳng mà không cần phải biết URL của htmlimg và tải xuống.

Tôi biết tôi có thể lấy URL từ phần tử hình ảnh và tải xuống bằng webclient. Hình ảnh thay đổi tùy theo cookie và IP. Vì vậy, sẽ không làm.

Tôi muốn hình ảnh chính xác được phần tử htmlimg hiển thị là hình ảnh được lưu trữ.

Về cơ bản như thể ai đó đang chụp ảnh màn hình cục bộ về nội dung hiển thị trên màn hình.

Trả lời

1

Có một giải pháp cũ cho đây này:

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

Những ngày này mặc dù có thể bạn muốn kiểm tra Html Agility Pack:

http://htmlagilitypack.codeplex.com/

Các tài liệu là không chính xác tuyệt vời tuy nhiên; vì vậy đoạn mã này có thể giúp:

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

Giải pháp này được tính khi biết URL và tải xuống trực tiếp. Hình ảnh không chỉ phụ thuộc vào URL mà còn phụ thuộc vào cookie và thông tin proxy. Tôi có thể bắt chước thông tin proxy và cookie với webclient nhưng điều đó phức tạp. –

Các vấn đề liên quan