程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 基於C#完成收集爬蟲 C#抓取網頁Html源碼

基於C#完成收集爬蟲 C#抓取網頁Html源碼

編輯:C#入門知識

基於C#完成收集爬蟲 C#抓取網頁Html源碼。本站提示廣大學習愛好者:(基於C#完成收集爬蟲 C#抓取網頁Html源碼)文章只能為提供參考,不一定能成為您想要的結果。以下是基於C#完成收集爬蟲 C#抓取網頁Html源碼正文


比來剛完成一個簡略的收集爬蟲,開端的時刻很渺茫,不曉得若何動手,後來發明了許多的材料,不外真正能到達我須要,有效的材料--代碼很難找。所以我想發這篇文章讓一些要做這個功效的同伙少走一些彎路。

起首是抓取Html源碼,並選擇<ul class="post_list">  </ul>節點的href:要添加using System.IO;using 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, "<ul class=\"post_list\">", "</ul>");
 
 
 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;
}

好了,下面就是全體代碼了,假如你想要運轉出來的話,有些細節要本身修正下。

以上就是本文的全體內容,願望對年夜家的進修有所贊助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved