亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

基于C#實現網頁爬蟲

2020-01-24 01:13:53
字體:
來源:轉載
供稿:網友

本文實例為大家分享了基于C#實現網頁爬蟲的詳細代碼,供大家參考,具體內容如下

HTTP請求工具類:

功能:

1、獲取網頁html

2、下載網絡圖片

using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Net;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;namespace Utils{  /// <summary>  /// HTTP請求工具類  /// </summary>  public class HttpRequestUtil  {    /// <summary>    /// 獲取頁面html    /// </summary>    public static string GetPageHtml(string url)    {      // 設置參數      HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;      request.UserAgent = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)";      //發送請求并獲取相應回應數據      HttpWebResponse response = request.GetResponse() as HttpWebResponse;      //直到request.GetResponse()程序才開始向目標網頁發送Post請求      Stream responseStream = response.GetResponseStream();      StreamReader sr = new StreamReader(responseStream, Encoding.UTF8);      //返回結果網頁(html)代碼      string content = sr.ReadToEnd();      return content;    }    /// <summary>    /// Http下載文件    /// </summary>    public static void HttpDownloadFile(string url)    {      int pos = url.LastIndexOf("/") + 1;      string fileName = url.Substring(pos);      string path = Application.StartupPath + "http://download";      if (!Directory.Exists(path))      {        Directory.CreateDirectory(path);      }      string filePathName = path + "http://" + fileName;      if (File.Exists(filePathName)) return;      // 設置參數      HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;      request.UserAgent = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)";      request.Proxy = null;      //發送請求并獲取相應回應數據      HttpWebResponse response = request.GetResponse() as HttpWebResponse;      //直到request.GetResponse()程序才開始向目標網頁發送Post請求      Stream responseStream = response.GetResponseStream();      //創建本地文件寫入流      Stream stream = new FileStream(filePathName, FileMode.Create);      byte[] bArr = new byte[1024];      int size = responseStream.Read(bArr, 0, (int)bArr.Length);      while (size > 0)      {        stream.Write(bArr, 0, size);        size = responseStream.Read(bArr, 0, (int)bArr.Length);      }      stream.Close();      responseStream.Close();    }  }}

多線程爬取網頁代碼:

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.IO;using System.Linq;using System.Text;using System.Text.RegularExpressions;using System.Threading;using System.Threading.Tasks;using System.Windows.Forms;using Utils;namespace 爬蟲{  public partial class Form1 : Form  {    List<Thread> threadList = new List<Thread>();    Thread thread = null;    public Form1()    {      InitializeComponent();    }    private void button1_Click(object sender, EventArgs e)    {      DateTime dtStart = DateTime.Now;      button3.Enabled = true;      button2.Enabled = true;      button1.Enabled = false;      int page = 0;      int count = 0;      int personCount = 0;      lblPage.Text = "已完成頁數:0";      int index = 0;      for (int i = 1; i <= 10; i++)      {        thread = new Thread(new ParameterizedThreadStart(delegate(object obj)        {          for (int j = 1; j <= 10; j++)          {            try            {              index = (Convert.ToInt32(obj) - 1) * 10 + j;              string pageHtml = HttpRequestUtil.GetPageHtml("http://tt.mop.com/c44/0/1_" + index.ToString() + ".html");              Regex regA = new Regex("<a[//s]+class=/"J-userPic([^<>]*?)[//s]+href=/"([^/"]*?)/"");              Regex regImg = new Regex("<p class=/"tc mb10/"><img[//s]+src=/"([^/"]*?)/"");              MatchCollection mc = regA.Matches(pageHtml);              foreach (Match match in mc)              {                int start = match.ToString().IndexOf("href=/"");                string url = match.ToString().Substring(start + 6);                int end = url.IndexOf("/"");                url = url.Substring(0, end);                if (url.IndexOf("/") == 0)                {                  string imgPageHtml = HttpRequestUtil.GetPageHtml("http://tt.mop.com" + url);                  personCount++;                  lblPerson.Invoke(new Action(delegate() { lblPerson.Text = "已完成條數:" + personCount.ToString(); }));                  MatchCollection mcImgPage = regImg.Matches(imgPageHtml);                  foreach (Match matchImgPage in mcImgPage)                  {                    start = matchImgPage.ToString().IndexOf("src=/"");                    string imgUrl = matchImgPage.ToString().Substring(start + 5);                    end = imgUrl.IndexOf("/"");                    imgUrl = imgUrl.Substring(0, end);                    if (imgUrl.IndexOf("http://i1") == 0)                    {                      try                      {                        HttpRequestUtil.HttpDownloadFile(imgUrl);                        count++;                        lblNum.Invoke(new Action(delegate()                        {                          lblNum.Text = "已下載圖片數" + count.ToString();                          DateTime dt = DateTime.Now;                          double time = dt.Subtract(dtStart).TotalSeconds;                          if (time > 0)                          {                            lblSpeed.Text = "速度:" + (count / time).ToString("0.0") + "張/秒";                          }                        }));                      }                      catch { }                      Thread.Sleep(1);                    }                  }                }              }            }            catch { }            page++;            lblPage.Invoke(new Action(delegate() { lblPage.Text = "已完成頁數:" + page.ToString(); }));            if (page == 100)            {              button1.Invoke(new Action(delegate() { button1.Enabled = true; }));              MessageBox.Show("完成!");            }          }        }));        thread.Start(i);        threadList.Add(thread);      }    }    private void button2_Click(object sender, EventArgs e)    {      button1.Invoke(new Action(delegate()      {        foreach (Thread thread in threadList)        {          if (thread.ThreadState == ThreadState.Suspended)          {            thread.Resume();          }          thread.Abort();        }        button1.Enabled = true;        button2.Enabled = false;        button3.Enabled = false;        button4.Enabled = false;      }));    }    private void Form1_FormClosing(object sender, FormClosingEventArgs e)    {      foreach (Thread thread in threadList)      {        thread.Abort();      }    }    private void button3_Click(object sender, EventArgs e)    {      foreach (Thread thread in threadList)      {        if (thread.ThreadState == ThreadState.Running)        {          thread.Suspend();        }      }      button3.Enabled = false;      button4.Enabled = true;    }    private void button4_Click(object sender, EventArgs e)    {      foreach (Thread thread in threadList)      {        if (thread.ThreadState == ThreadState.Suspended)        {          thread.Resume();        }      }      button3.Enabled = true;      button4.Enabled = false;    }  }}

截圖:

以上就是本文的全部內容,希望對大家的學習有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲男人天堂网站| 成人av资源在线播放| 欧美精品18videos性欧美| 亚洲美女av在线播放| 欧美一级视频一区二区| 国产欧美精品在线播放| 久久久av网站| 成人国产精品免费视频| 91丨九色丨国产在线| 国产精品毛片a∨一区二区三区|国| 国产精品极品在线| 亚洲欧洲国产一区| 欧美又大粗又爽又黄大片视频| 欧美激情欧美激情在线五月| 成人免费视频a| 国产精品99久久久久久久久| 97人洗澡人人免费公开视频碰碰碰| 亚洲www在线观看| 国产精品久久久久久久久久| 欧美午夜宅男影院在线观看| 国产综合视频在线观看| 欧美精品免费在线| 9.1国产丝袜在线观看| 精品国产乱码久久久久久虫虫漫画| 久久免费国产视频| 亚洲一区免费网站| 国产一区二区三区精品久久久| 欧美亚洲一级片| 日韩av一区在线观看| 精品久久久香蕉免费精品视频| 国内精品模特av私拍在线观看| 最新国产成人av网站网址麻豆| 国产精品自产拍高潮在线观看| 伊人伊人伊人久久| 少妇久久久久久| 日韩福利在线播放| 欧洲精品在线视频| 国产丝袜一区视频在线观看| 国产精品亚洲美女av网站| 欧美成人亚洲成人日韩成人| 欧美视频免费在线| 亚洲福利视频网站| 伊人精品在线观看| 国产欧美日韩中文字幕在线| 亚洲国产精品va在线观看黑人| 7777精品久久久久久| 丝袜亚洲另类欧美重口| 久久精品中文字幕一区| 8050国产精品久久久久久| 国产精品尤物福利片在线观看| 国产精品老女人视频| 亚洲免费伊人电影在线观看av| 国产亚洲人成网站在线观看| 成人欧美一区二区三区黑人| 超碰91人人草人人干| 久久精品亚洲国产| 中文字幕精品影院| 国产色婷婷国产综合在线理论片a| 国产欧美精品日韩精品| 久久频这里精品99香蕉| 国产精品91久久久久久| 国产精品欧美在线| 国产精品入口免费视| 日韩av片永久免费网站| 国产成人高清激情视频在线观看| 亚洲成人亚洲激情| 亚洲人成电影网站| 尤物99国产成人精品视频| 日本精品在线视频| 久久久免费av| 欧美精品在线免费观看| 国产在线视频91| 国产精品黄色影片导航在线观看| 成人午夜高潮视频| 97超级碰碰碰| 欧美国产日韩免费| 在线观看91久久久久久| 欧美激情精品久久久久久黑人| 欧美激情视频网站| 日韩欧美有码在线| 麻豆一区二区在线观看| 91精品久久久久久久久久另类| 中文字幕亚洲欧美日韩在线不卡| 亚洲女人天堂成人av在线| 日韩av影视综合网| 亚洲美女在线看| 久久久久中文字幕2018| 国产精品69久久| 久久精品国产一区二区电影| 久久久www成人免费精品| 中文字幕国产精品| 亚洲精品自拍第一页| 亚洲三级免费看| 国产精品久久一区| 欧美午夜性色大片在线观看| 欧美xxxx做受欧美.88| 欧美性受xxxx黑人猛交| 欧美极度另类性三渗透| 亚洲视频777| 日本三级久久久| 国产精品自拍偷拍| 亚洲精品视频在线播放| 日韩极品精品视频免费观看| 国产亚洲精品久久久久久牛牛| 91久久嫩草影院一区二区| 91免费的视频在线播放| 欧美激情第6页| 热99精品里视频精品| 国产精品美女免费| 欧美视频不卡中文| 国产精品9999| 欧美性xxxx在线播放| 亚洲天堂网在线观看| 成人精品久久av网站| 亚洲成年网站在线观看| 国产在线观看精品一区二区三区| 国产精品精品视频一区二区三区| 久久久久久久久久亚洲| 欧美老女人性生活| 91极品视频在线| 午夜精品一区二区三区在线| 51色欧美片视频在线观看| 欧美超级免费视 在线| 久久香蕉国产线看观看av| 国产欧美在线视频| 久久精品国产综合| www.亚洲人.com| 91精品国产乱码久久久久久蜜臀| 91大神在线播放精品| 一夜七次郎国产精品亚洲| 日韩精品中文字幕久久臀| 播播国产欧美激情| 78m国产成人精品视频| 精品久久中文字幕久久av| www国产亚洲精品久久网站| 日韩一二三在线视频播| 欧美精品999| 九九九热精品免费视频观看网站| 国内外成人免费激情在线视频| 成人午夜激情网| 欧美自拍视频在线观看| 欧美一级在线播放| 亚洲经典中文字幕| 亚州精品天堂中文字幕| 久久久精品视频成人| 亚洲人成免费电影| 亚洲一区999| 91精品国产色综合久久不卡98口| 成人黄色短视频在线观看| xvideos国产精品| 黑人精品xxx一区一二区| 亚洲bt欧美bt日本bt| 久久久国产视频91| 青青久久aⅴ北条麻妃| 国产精品视频999| 亚洲成**性毛茸茸| 亚洲一品av免费观看| 亚洲国产精品免费| 欧美视频一区二区三区…| 欧美乱大交做爰xxxⅹ性3| 精品中文字幕在线| 亚洲四色影视在线观看| 国产在线观看不卡| 亚洲一区二区三区在线免费观看|