如何从页面网址抓取第一张图片并沿着BOOKMARK描述显示?

时间:2011-09-13 04:49:56

标签: c# asp.net

我正在 ASP.NET 中开发社交书签网站,其中我正在显示用户添加的书签。我想把网页的第一张图像和书签一起显示给用户。但我不知道我是怎么做到的。

更新(14.09.11):这是我找到的解决方案:

(HttpWebRequest) HttpWebRequest.Create(TextBox1.Text); 
request.UserAgent = "LPU Crawler"; 
WebResponse response = request.GetResponse(); 
Stream stream = response.GetResponseStream(); 
StreamReader reader = new StreamReader(stream); 
string httptxt = reader.ReadToEnd(); 
extractimgs(httptxt); 
foreach (string pic in pics) 
{ 
    TextBox2.Text += pic; 
    TextBox2.Text += "\n"; 
} 

private void extractimgs(string httptxt) 
{ 
    const string match=
        "(?<=img\\s+src\\=[\x27\x22])(?<Url>[^\x27\x22]*)(?=[\x27\x22])"; 
    MatchCollection matches = Regex.Matches(httptxt,match,
        RegexOptions.IgnoreCase); 
    for (int i = 0; i <= matches.Count - 1; i++) 
    { 
        Match anchorMatch = matches[i]; 
        if (String.IsNullOrEmpty(anchorMatch.Value)) 
        { 
            Response.Write("No Img Found"); 
        } 
        pics.Add(anchorMatch.ToString()); 
    } 
}

1 个答案:

答案 0 :(得分:1)

您可以使用HTML敏捷包。

您可以通过CodePlex下载:

http://htmlagilitypack.codeplex.com/

或者您可以使用NuGet:

http://nuget.org/List/Packages/HtmlAgilityPack

使用Html Agility Pack,您可以轻松下载网页并解析其内容。

要检索第一个图像的URL,您可以使用以下LINQ查询:

var url = "http://www.stackoverflow.com";
var document = new HtmlWeb().Load(url);
var imageUrl = (from image in document.DocumentNode.Descendants("img")
                where !String.IsNullOrEmpty(image.GetAttributeValue("src", null))
                select image.Attributes["src"].Value).FirstOrDefault();
if (imageUrl != null)
{
   //...
}

您可以使用图片的地址(SRC属性)将它们包含在您自己的页面中,或者发出Web请求以下载它们。

下载图片的一些快速代码:

string imageUrl= 
    "http://www.example.com/logo.jpg";
WebRequest request = WebRequest.Create(url);
WebResponse response = request.GetResponse();
Image image = Image.FromStream(response.GetResponseStream());
var extension = Path.GetExtension(url).Substring(0, 4);
image.Save(@"c:\test" + extension);