c 抓取网页数据(基于C#实现网络爬虫的相关资料--代码很难找)
优采云 发布时间: 2021-11-24 10:10c 抓取网页数据(基于C#实现网络爬虫的相关资料--代码很难找)
本文文章主要详细介绍了基于C#的网络爬虫的相关资料,即C#抓取网页的Html源码。有兴趣的朋友可以参考一下。
我最近刚刚完成了一个简单的网络爬虫。一开始,我很迷茫,不知道如何下手。后来找了很多资料,但确实能满足我的需求,有用的资料——代码好难找。所以想发这个文章,让一些想做这个功能的朋友少走一些弯路。
首先是抓取Html源码,选择节点的href: to add using System.IO; 使用 System.Net;
private void Search(string url) { string rl; WebRequest Request = WebRequest.Create(url.Trim()); WebResponse Response = Request.GetResponse(); Stream resStream = Response.GetResponseStream(); StreamReader sr = new StreamReader(resStream, Encoding.Default); StringBuilder sb = new StringBuilder(); while ((rl = sr.ReadLine()) != null) { sb.Append(rl); } string str = sb.ToString().ToLower(); string str_get = mid(str, "", ""); int start = 0; while (true) { if (str_get == null) break; string strResult = mid(str_get, "href=\"", "\"", out start); if (strResult == null) break; else { lab[url] += strResult; str_get = str_get.Substring(start); } } } private string mid(string istr, string startString, string endString) { int iBodyStart = istr.IndexOf(startString, 0); //开始位置 if (iBodyStart == -1) return null; iBodyStart += startString.Length; //第一次字符位置起的长度 int iBodyEnd = istr.IndexOf(endString, iBodyStart); //第二次字符在第一次字符位置起的首次位置 if (iBodyEnd == -1) return null; iBodyEnd += endString.Length; //第二次字符位置起的长度 string strResult = istr.Substring(iBodyStart, iBodyEnd - iBodyStart - 1); return strResult; } private string mid(string istr, string startString, string endString, out int iBodyEnd) { //初始化out参数,否则不能return iBodyEnd = 0; int iBodyStart = istr.IndexOf(startString, 0); //开始位置 if (iBodyStart == -1) return null; iBodyStart += startString.Length; //第一次字符位置起的长度 iBodyEnd = istr.IndexOf(endString, iBodyStart); //第二次字符在第一次字符位置起的首次位置 if (iBodyEnd == -1) return null; iBodyEnd += endString.Length; //第二次字符位置起的长度 string strResult = istr.Substring(iBodyStart, iBodyEnd - iBodyStart - 1); return strResult; }
好了,以上就是全部代码了,要运行的话,有些细节还得自己修改。