我正在开发一个社会书签网站在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\=[x27x22])(?<Url>[^x27x22]*)(?=[x27x22])";
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());
}
}
您可以使用HTML敏捷性包。
你可以通过CodePlex下载:
http://htmlagilitypack.codeplex.com/或者你可以使用NuGet:
http://nuget.org/List/Packages/HtmlAgilityPack使用Html敏捷包,您可以轻松地下载网页并解析其内容。
要检索第一张图片的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);