从服务器获取完整的图像路径

时间:2012-07-20 11:32:49

标签: html c#-4.0 html-parsing

我想从服务器中提取图像并将其存储在本地系统中。图像在<img>标记中显示为背景。如何提取和存储图像。实际的图片标记在下面给出

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

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

1 个答案:

答案 0 :(得分: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");