基于C#实现网络爬虫 C#抓取网页Html源码
最近刚完成一个简单的网络爬虫,开始的时候很迷茫,不知道如何入手,后来发现了很多的资料,不过真正能达到我需要,有用的资料--代码很难找。所以我想发这篇文章让一些要做这个功能的朋友少走一些弯路。
首先是抓取Html源码,并选择<ulclass="post_list"> </ul>节点的href:要添加usingSystem.IO;usingSystem.Net;
privatevoidSearch(stringurl)
{
stringrl;
WebRequestRequest=WebRequest.Create(url.Trim());
WebResponseResponse=Request.GetResponse();
StreamresStream=Response.GetResponseStream();
StreamReadersr=newStreamReader(resStream,Encoding.Default);
StringBuildersb=newStringBuilder();
while((rl=sr.ReadLine())!=null)
{
sb.Append(rl);
}
stringstr=sb.ToString().ToLower();
stringstr_get=mid(str,"<ulclass=\"post_list\">","</ul>");
intstart=0;
while(true)
{
if(str_get==null)
break;
stringstrResult=mid(str_get,"href=\"","\"",outstart);
if(strResult==null)
break;
else
{
lab[url]+=strResult;
str_get=str_get.Substring(start);
}
}
}
privatestringmid(stringistr,stringstartString,stringendString)
{
intiBodyStart=istr.IndexOf(startString,0);//开始位置
if(iBodyStart==-1)
returnnull;
iBodyStart+=startString.Length;//第一次字符位置起的长度
intiBodyEnd=istr.IndexOf(endString,iBodyStart);//第二次字符在第一次字符位置起的首次位置
if(iBodyEnd==-1)
returnnull;
iBodyEnd+=endString.Length;//第二次字符位置起的长度
stringstrResult=istr.Substring(iBodyStart,iBodyEnd-iBodyStart-1);
returnstrResult;
}
privatestringmid(stringistr,stringstartString,stringendString,outintiBodyEnd)
{
//初始化out参数,否则不能return
iBodyEnd=0;
intiBodyStart=istr.IndexOf(startString,0);//开始位置
if(iBodyStart==-1)
returnnull;
iBodyStart+=startString.Length;//第一次字符位置起的长度
iBodyEnd=istr.IndexOf(endString,iBodyStart);//第二次字符在第一次字符位置起的首次位置
if(iBodyEnd==-1)
returnnull;
iBodyEnd+=endString.Length;//第二次字符位置起的长度
stringstrResult=istr.Substring(iBodyStart,iBodyEnd-iBodyStart-1);
returnstrResult;
}
好了,上面就是全部代码了,如果你想要运行出来的话,有些细节要自己修改下。
以上就是本文的全部内容,希望对大家的学习有所帮助。
热门推荐
1 如何训练狗狗不叫
2 训练狗狗不叫
3 训练狗狗随行
4 怎么训练狗狗不叫
7 训练比熊狗狗教程
10 上海狗狗训练
11 怎么训练狗狗上厕所
12 训练狗狗趴下
13 狗狗服从训练
14 训练狗狗拒食
15 训练狗狗笑
16 训练狗狗大便
17 训练狗狗立
18 训练狗狗捡东西