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

首頁 > 學院 > 開發設計 > 正文

C#實現網頁爬蟲

2019-11-14 13:30:18
字體:
來源:轉載
供稿:網友

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 + "//download";            if (!Directory.Exists(path))            {                Directory.CreateDirectory(path);            }            string filePathName = path + "//" + 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();        }    }}
View Code

多線程爬取網頁代碼:

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;        }    }}
View Code

截圖:

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产婷婷色综合av蜜臀av| 国产精品美女久久久久久免费| 88国产精品欧美一区二区三区| 亚洲色图综合网| 亚洲国产精品久久久久秋霞不卡| 久久久精品2019中文字幕神马| 日韩精品视频在线免费观看| 久久久电影免费观看完整版| 亚洲天堂免费在线| 日韩欧美综合在线视频| 国内免费久久久久久久久久久| 日韩精品免费一线在线观看| 亚洲成人精品久久久| 国产精品电影网| 精品亚洲国产成av人片传媒| 亚洲最新av在线| 欧美一区二区三区免费视| 超碰精品一区二区三区乱码| 欧美精品video| 在线色欧美三级视频| 538国产精品一区二区在线| 日韩av有码在线| 国内精品400部情侣激情| 日韩美女av在线| 97成人精品视频在线观看| 欧美体内谢she精2性欧美| 91精品国产乱码久久久久久久久| 日韩中文字幕精品视频| 精品美女国产在线| 川上优av一区二区线观看| 北条麻妃99精品青青久久| 欧美精品www在线观看| 国产精品视频色| 亚洲视频免费一区| 国产99久久精品一区二区永久免费| 欧美精品日韩www.p站| 亚洲成人激情在线观看| 国产午夜精品一区理论片飘花| 日韩欧美国产激情| 一区二区三区视频免费| 国产大片精品免费永久看nba| 在线观看精品自拍私拍| 中文字幕九色91在线| 亚洲aⅴ日韩av电影在线观看| 一本大道香蕉久在线播放29| 91免费视频国产| 精品成人国产在线观看男人呻吟| 国产激情999| 国产情人节一区| 日韩视频免费在线观看| 欧美在线一级va免费观看| 久久伊人精品天天| 国产欧美日韩91| 国产精品美女主播在线观看纯欲| 国产精品入口尤物| 久久九九有精品国产23| 国产欧美久久一区二区| 国产亚洲免费的视频看| 国产日韩在线一区| 久久综合久久八八| 亚洲精品视频中文字幕| 亚洲一区二区三区在线免费观看| 国产精品久久激情| 国产精品激情自拍| 精品久久久久久久久久久久久| 日韩在线观看网站| 色偷偷888欧美精品久久久| 98精品国产自产在线观看| 综合国产在线视频| 亚洲电影免费观看高清完整版| 在线精品国产欧美| 欧美性猛交xxx| 亚洲综合中文字幕在线观看| 亚洲护士老师的毛茸茸最新章节| 欧美性高潮在线| 久久久久久久久久婷婷| 一区二区三区亚洲| 欧美日韩另类字幕中文| 粗暴蹂躏中文一区二区三区| 亚洲国产精品热久久| 色婷婷av一区二区三区久久| 欧美日韩国产精品一区二区不卡中文| 午夜精品一区二区三区在线播放| 亚洲欧美综合v| 亚洲一区二区三区在线视频| 欧美高清在线观看| 欧美精品免费播放| 美女福利精品视频| 91最新国产视频| 久久综合伊人77777尤物| 日韩国产欧美精品一区二区三区| 中文字幕日本精品| 国产精品久久久久久av福利软件| 久久久女人电视剧免费播放下载| 欧美韩国理论所午夜片917电影| 欧美丰满少妇xxxx| 国产精品国语对白| 欧美综合第一页| 亚洲国产成人精品久久久国产成人一区| 一区二区三区日韩在线| 国产精品揄拍一区二区| 中文字幕亚洲字幕| 国产精品88a∨| 亚洲欧美一区二区三区四区| 亚洲一区999| 色播久久人人爽人人爽人人片视av| 黑人巨大精品欧美一区二区一视频| 国模叶桐国产精品一区| 久久久国产一区二区| 亚洲色无码播放| 欧美日韩一区二区免费在线观看| 日韩黄色在线免费观看| 日韩欧美在线国产| 国产日韩欧美日韩| 日韩美女免费视频| 国产精品爽黄69天堂a| 久久精品91久久久久久再现| 久久久女女女女999久久| 欧美尺度大的性做爰视频| 久久久国产影院| 亚洲va欧美va国产综合久久| 亚洲天堂精品在线| 亚洲成人av片在线观看| 亚洲图片欧洲图片av| 亚洲欧洲国产精品| 日本欧美一二三区| 久久久久国产一区二区三区| 成人免费看片视频| 亚洲第一区中文99精品| 97成人精品视频在线观看| 日韩国产欧美区| 午夜精品美女自拍福到在线| 色综合影院在线| 人妖精品videosex性欧美| 日本道色综合久久影院| 亚洲社区在线观看| 国产精品爽爽爽爽爽爽在线观看| 国产噜噜噜噜久久久久久久久| 国产精品com| 亚洲国产成人一区| 久久影视电视剧凤归四时歌| 日韩精品视频在线播放| 亚洲区在线播放| 中文字幕日本精品| 亚洲xxx大片| 8090成年在线看片午夜| 69**夜色精品国产69乱| 在线播放亚洲激情| 日韩中文字幕免费视频| 欧美人在线观看| 国产精品久久久久免费a∨| 国产不卡精品视男人的天堂| 久久天天躁狠狠躁夜夜躁| 欧美午夜激情小视频| 日韩av在线网址| 久久久久久中文| 亚洲а∨天堂久久精品喷水| 精品亚洲国产成av人片传媒| 日韩精品中文字幕久久臀| 国产日韩精品电影| 中文字幕日本精品| 97在线视频免费看| 日韩精品在线播放| 九色成人免费视频|