//用来获取整个网站中所有的a标签中的连接,并请求 public void TestMain() { //如果href是urls的子集,就结束 if (PageHandle.ChildList(urls, href)) { return; } else { //暂存urls中的内容,后期循环请求使用 List <string> list1 = new List <string>(); list1.AddRange(urls); //将得到的href去重 更改为http开头 href = PageHandle.ChangeHttp(href, baseurl); href = PageHandle.RemoveRepeat(href); //将href中新的url添加到urls中 urls = PageHandle.ListMemIn(urls, href); //请求新的url,得到新的href foreach (string m in href) { //新的url则请求 if (!(list1.Contains(m))) { string pam = " "; string htmls = Request.GetRequest(m, pam); href = PageHandle.GetHref(htmls); //将得到的href去重 更改为http开头 href = PageHandle.ChangeHttp(href, baseurl); href = PageHandle.RemoveRepeat(href); //当输入url错误时,记录错误的url和原因 string str = PageHandle.GetHttpError(m, htmls); Errorurls = PageHandle.StrJoinList(Errorurls, str); //新的href循环 TestMain(); } } } }
//判断列表中的成员是否是http://格式 不是的转换成http://格式 public static List <string> ChangeHttp(List <string> list, string baseurl) { string ss; List <string> list1 = new List <string>(); foreach (string m in list) { if (PageHandle.HrefStartWithHttp(m)) { list1.Add(m); } else { ss = PageHandle.JoinUrl(baseurl, m); list1.Add(ss); } } return(list1); }