国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
求一個(gè)C#的網(wǎng)頁數(shù)據(jù)抓取源代碼
昨天主管突然找我,說月底有個(gè)游戲要發(fā)新補(bǔ)丁,但是沒有新增部分的資料,找到一個(gè)網(wǎng)站卻不知道怎么下載到我們的數(shù)據(jù)庫中.
我看了一下,網(wǎng)頁為了防抓取,都是用js來生成內(nèi)容,不過還是讓我找到具體位置,所有物品有3萬多,需要的還要過濾,有用的只有3千多,人工來做幾乎不太現(xiàn)實(shí)的,于是寫了一個(gè)winform來抓它的信息來寫到數(shù)據(jù)庫中
動(dòng)作在DocumentCompleted事件中完成.



        private const string SQL_DATA = "select * from Table1";
        private const string SQL_INSERT_1 = "insert into Table1 (WebID,Name,NeedLevel,Content) values (";
        private const string Sql_INSERT_2 = ")";       
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            string mydocument = webBrowser1.DocumentText;

            //listBox1.Items.Add(mydocument);
            string SQL_INSERT = string.Empty;
//取得頁面中的物品等級
            int mylevel = GetLevel(mydocument);
//取得頁面中物品名稱
            string myname = GetName(mydocument);
            if (!string.IsNullOrEmpty(myname))
            {
                SQL_INSERT = SQL_INSERT_1 + ID.ToString() + ",'" + myname + "'," + mylevel + ",'" + mydocument + "'" + Sql_INSERT_2;

                SqlConnection cn = new SqlConnection();
                cn.ConnectionString = SQL_CONNECTION;
                SqlCommand sqlcmd = new SqlCommand(SQL_INSERT, cn);
                cn.Open();
                try
                {
                    int tmp = sqlcmd.ExecuteNonQuery();
                }
                catch
                {
                    throw new Exception("no good");
                }
                sqlcmd.Dispose();
                cn.Close();
            }
        }
 取得物品名稱和等級:www.shiapifa.com

        private string GetName(string mydocument)
        {
            if (string.IsNullOrEmpty(mydocument)) return string.Empty;
            int pos_start = mydocument.IndexOf(".html\">", 0);
            if (pos_start == -1) return string.Empty;
            int pos_end = mydocument.IndexOf("</a></div>", 0);
            if (pos_end == -1) return string.Empty;
            if (pos_start >= pos_end) return string.Empty; 
            string name = string.Empty;
            name = mydocument.Substring(pos_start + 7, pos_end - pos_start - 7);
            return name;
        }

        private int GetLevel(string mydocument)
        {
            if (string.IsNullOrEmpty(mydocument))return 0;
            int pos_start = mydocument.IndexOf("需要等級", 0);
            if (pos_start == -1) return 0;
            int pos_end = mydocument.IndexOf("</div>", pos_start);
            if (pos_end == -1) return 0;
            if (pos_start >= pos_end) return  0;
            string Level = "0";
            Level = mydocument.Substring(pos_start + 5, pos_end - pos_start - 5);
            int intleve = 0;
            try
            {
                intleve = Convert.ToInt32(Level);
            }
            catch
            {
            }
            finally
            {
                
            }
                return intleve;
        }

無法判斷瀏覽器是否完成加載,所以用timer控件來完成: www.wanxinyi.com

        private const int START_ID = 1;
        private const int END_ID = 40000;//32999;
        private static int ID = 1;

        private void timer1_Tick(object sender, EventArgs e)
        {
            if (ID < END_ID && !webBrowser1.IsBusy)
            {
                ID = ID + 1;
                webBrowser1.Navigate("http://xxxx.com/xx.php?id=" + ID.ToString());

                //listBox1.Items.Add(ID.ToString() + webBrowser1.DocumentText);

                //InsertIntoDB(webBrowser1.DocumentText, ID);
                textBox4.Text = ID.ToString();
            }
        }
timer的interval控制在1000ms,40000條數(shù)據(jù)用了11個(gè)多小時(shí),從昨天晚上10點(diǎn)到今天早上,剛來的時(shí)候看到數(shù)據(jù)全都乖乖的在數(shù)據(jù)庫呆著了.呵呵,搞定,交差...

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
string類的成員函數(shù)
深入剖析c++中的string類
C++ string類
C++中的string類用法簡介
從數(shù)據(jù)庫導(dǎo)入到Excel表格
MySQL日志
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服