C#如何获取某个页面中所有的图片链接

「已注销」 2009-12-06 06:15:13
我用C#构建了一个窗体,点击button打开指定网页,我的需求是:打开网页的同时获取该网页中包含的所有图片链接地址。

比如我打开了http://www.baidu.com/,这是我要获取这个页面中包含的两个图片连接的地址:
http://www.baidu.com/img/baidu_logo.gif
http://gimg.baidu.com/img/gs.gif

我该怎么用c#来实现,谢谢!

PS:下面这个是从msdn看的资料写得,可是webInstance.Document 返回总是空,不知道为什么。
        private string[] GetImagePath(string webSite)
{
WebBrowser webInstance = new WebBrowser();
webInstance.Navigate("http://www.baidu.com");
if (webInstance.Document != null)
{
HtmlDocument doc = webInstance.Document;
string[] urls = (string[])Array.CreateInstance(Type.GetType("System.String"), doc.Images.Count);

foreach (HtmlElement imgElement in doc.Images)
{
urls[urls.Length] = imgElement.GetAttribute("src");
}
return (urls);
}
else
{
return (new string[0]);
}
}
...全文
289 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2009-12-06
  • 打赏
  • 举报
回复
谢谢, ALL。
-过客- 2009-12-06
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 sylan215 的回复:]
谢谢大侠,那个foreach没有错,我搞错了,不好意思。

然后我想问下,因为你用了request.UserAgent ,那是不是这个只能对IE8起作用啊,如果我想用别的浏览器这个地方是不是就要改成别的UserAgent了?谢谢
[/Quote]

不需要,这个只是做个模拟,有些网站需要这个参数才能取得源文件而已
「已注销」 2009-12-06
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 lxcnn 的回复:]
C# code///<summary>/// 通过URL取网页源代码///</summary>///<param name="url">URL</param>///<param name="encoding">网页编码</param>///<returns></returns>privatestring GetHtmlCode(string url, Encoding encoding)
{
?-
[/Quote]

谢谢大侠,那个foreach没有错,我搞错了,不好意思。

然后我想问下,因为你用了request.UserAgent ,那是不是这个只能对IE8起作用啊,如果我想用别的浏览器这个地方是不是就要改成别的UserAgent了?谢谢
sohighthesky 2009-12-06
  • 打赏
  • 举报
回复

WebBrowser web = new WebBrowser();
web.Navigate("http://www.baidu.com");
web.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(delegate(object sender, WebBrowserDocumentCompletedEventArgs e)
{
HtmlElementCollection imgs =web.Document.GetElementsByTagName("img");
string[] arr=new string[imgs.Count];
for (int i = 0; i < imgs.Count; i++)
{
arr[i] = imgs[i].GetAttribute("src");
}
});
「已注销」 2009-12-06
  • 打赏
  • 举报
回复
谢谢,大侠。

foreach (Match m in mc)这行报错了:
Invalid token 'foreach' in class, struct, or interface member declaration
-过客- 2009-12-06
  • 打赏
  • 举报
回复

/// <summary>
/// 通过URL取网页源代码
/// </summary>
/// <param name="url">URL</param>
/// <param name="encoding">网页编码</param>
/// <returns></returns>
private string GetHtmlCode(string url, Encoding encoding)
{
System.Net.HttpWebRequest request = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(url);
request.UserAgent = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)";
System.Net.WebResponse response = request.GetResponse();
System.IO.Stream resStream = response.GetResponseStream();
System.IO.StreamReader sr = new System.IO.StreamReader(resStream, encoding);
string html = (sr.ReadToEnd());
resStream.Close();
sr.Close();
return html;
}
//取图片链接
string html = GetHtmlCode("http://www.baidu.com", Encoding.GetEncoding("gb2312"));
Regex reg = new Regex(@"(?i)<img\b[^>]*?src=(['""]?)([^'""\s>]+)\1[^>]*>");
MatchCollection mc = reg.Matches(html);
foreach (Match m in mc)
{
richTextBox2.Text += m.Groups[2].Value + "\n";
}

111,122

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧