一个简单的C#爬虫程序
程序员文章站
2023-10-16 13:04:33
这篇这篇文章主要是展示了一个C#语言如何抓取网站中的图片。实现原理就是基于http请求。C#给我们提供了HttpWebRequest和WebClient两个对象,方便发送请求获取数据,下面看如何实 1,HttpGetAction方法。用于发送请求获取数据后处理字符串得到图片地址 1 public s ......
这篇这篇文章主要是展示了一个c#语言如何抓取网站中的图片。实现原理就是基于http请求。c#给我们提供了httpwebrequest和webclient两个对象,方便发送请求获取数据,下面看如何实
1,httpgetaction方法。用于发送请求获取数据后处理字符串得到图片地址
1 public static void httpgetaction(string url,string path,int name) 2 { 3 stopwatch sw = new stopwatch(); 4 sw.start(); 5 console.writeline("抓取地址:" + url); 6 string result = string.empty; 7 httpwebrequest webrequest = webrequest.createhttp(url); 8 webrequest.method = "get"; 9 var response= webrequest.getresponse(); 10 using (streamreader reader = new streamreader((response as httpwebresponse).getresponsestream(), encoding.utf8)) 11 { 12 result = reader.readtoend(); 13 reader.close(); 14 } 15 if (string.isnullorempty(result)) 16 { 17 console.writeline("请求地址错误"); 18 console.readkey(); 19 return; 20 } 21 //提取img标签src地址 22 regex regimg = new regex(@"<img\b[^<>]*?\bsrc[\s\t\r\n]*=[\s\t\r\n]*[""']?[\s\t\r\n]*(?<imgurl>[^\s\t\r\n""'<>]*)[^<>]*?/?[\s\t\r\n]*>", regexoptions.ignorecase); 23 // 搜索匹配的字符串 24 matchcollection matches = regimg.matches(result); 25 //爬取数量 26 int i = 0; 27 webclient web = new webclient(); 28 // 取得匹配项列表 29 foreach (match match in matches) 30 { 31 string imgsrc = match.groups["imgurl"].value; 32 if (imgsrc.contains("http") && !imgsrc.contains(".svg")) 33 { 34 i++; 35 httpgetimg(web,imgsrc, path,name); 36 name++;//图片名 37 } 38 } 39 sw.stop(); 40 console.writeline("爬取完成!总共爬取了" + i + "张图片!"); 41 console.writeline("爬取图片耗时:" + sw.elapsedmilliseconds / 1000 + "秒"); 42 }
2,httpgetimg方法。下载图片到指定目录
1 public static void httpgetimg(webclient web, string src,string path,int name) 2 { 3 console.writeline("爬取图片:" + src); 4 if (!directory.exists(path)) 5 { 6 console.writeline("路径错误!"); 7 console.readkey(); 8 return; 9 } 10 web.downloadfile(src, path+name+".jpg"); 11 console.writeline("爬取图片成功:" + name+".jpg"); 12 }
3,控制台调用
1 static void main(string[] args) 2 { 3 string url= "https://www.xxxxxx.com/"; 4 string path = path.combine(@"d:\word 资料\img\冬天\"); 5 httphelper.httpgetaction(url,path,1); 6 console.readkey(); 7 }
效果图:
一个简单的c#爬虫程序就完成了。如有错误的地方还望大神指点
原文来自:一个简单的c#程序-曾亚平个人博客