2012-07-20 104 views
0

我想從服務器提取映像並將其存儲在本地系統中。圖像在<img>標記中顯示爲背景。如何提取和存儲圖像。實際的圖像標籤如下所示獲取服務器映像的完整路徑

<img style="background:Url('..//contactdetails?data=4512354367432554')" src="some transparent image"/> 

在上面的標籤圖像顯示爲背景和src包含一些透明的圖像。

回答

1

您需要對圖像執行請求,然後將其保存在您的機器上。 首先獲得圖像的URI:

var html = @"<img style=""background:Url('..//contactdetails?data=4512354367432554')"" src=""some transparent image""/>"; 
var regex = new Regex(@"//(?<Path>[^']+)'", RegexOptions.Singleline) 
var uri = regex.Match(html).Groups["Path"].Value; 

編輯

如果您正在使用HtmlAgilityPack(因爲你已經提取的a標籤),您可以使用Attributes收集得到style屬性,對正則表達式進行匹配,或者您可以直接使用OuterHtml屬性來匹配這樣的模式:

var anchorTag = YourCodeToGetTheAnchorTag(); 
var attribute = anchorTag.Attributes["style"]; 
var match = regex.Match(attribute.Value); 
var uri = match.Groups["Path"].Value; 

或者使用OuterHtml屬性:

var anchorTag = YourCodeToGetTheAnchorTag(); 
var match = regex.Match(anchorTag.OuterHtml); 
var uri = match.Groups["Path"].Value 

接下來,拼接圖像的URI從服務器的目錄,並創建一個請求:

var fullUri = "http://www.example.com/" + uri; 
var request = (HttpWebRequest)WebRequest.Create(fullUri); 

得到響應並保存圖像:

var response = request.GetResponse(); 
var image = Image.FromStream(response.GetResponseStream()); 
image.Save("path-on-your-machine"); 
+0

謝謝RePierre,我使用htmlagilitypack來提取。你可以展示如何在C#中做到這一點。我嘗試修改你的代碼並使用,但它不工作。 – Maddy 2012-07-20 12:23:40

+0

@ user1516690,請參閱編輯;希望能幫助到你。 – RePierre 2012-07-24 06:24:07