获取服务器映像的完整路径

问题描述:

我想从服务器提取映像并将其存储在本地系统中。图像在<img>标记中显示为背景。如何提取和存储图像。实际的图像标签如下所示获取服务器映像的完整路径

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

在上面的标签图像显示为背景和src包含一些透明的图像。

您需要对图像执行请求,然后将其保存在您的机器上。 首先获得图像的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