我正在 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());
}
}
答案 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);