国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

數(shù)據(jù)采集程序(網(wǎng)頁小偷)點滴心得

2019-11-18 17:56:07
字體:
供稿:網(wǎng)友

所謂的數(shù)據(jù)采集程序也就是網(wǎng)頁小偷程序(大家別罵我哦),寫完了來這里發(fā)點東西,希望大家有何高見共同研究.

1.在下載數(shù)據(jù)的開始,有些網(wǎng)站是要登錄了才能看到相應(yīng)的數(shù)據(jù),這個就需要我們發(fā)送登錄用戶名和密碼了,但我是登錄了,但他服務(wù)器也不是垃圾,在他那里重定向了,共產(chǎn)生了2個session,這第2個SESSION我就不知道如何捕抓.于是我就投機(jī)^-^,用軟件將SESSION捕抓下來了1個叫Ethereal的軟件,用以下代碼加入到HTTP請求的頭部
WebClient myWebClient = new WebClient();
string sessionkey=textBox78.Text;
     string refererurl=textBox77.Text;
     myWebClient.Headers.Clear();    
     myWebClient.Headers.Add("Cookie",sessionkey);
     myWebClient.Headers.Add("Referer", refererurl);
     myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (X11; U; linux i686; en-US; rv:1.5) Gecko/20031107 Debian/1.5-3");
這樣就欺騙了服務(wù)器了,哈哈

2.第二部就是代碼下載
byte[] myDataBuffer = myWebClient.DownloadData(remoteUri);
 download = Encoding.Default.GetString(myDataBuffer);

3.第3部就是數(shù)據(jù)的匹配了,我是將流讀取到數(shù)據(jù)里,然后用IndexOf得到2個關(guān)鍵字段的位置,然后用Substring取出來的,我知道這很笨,但用正則表達(dá)式難啊(誰會的指點我下),匹配完了得到的字符串我就用以下的函數(shù)去掉了HTML代碼:
PRivate string StripHTML(string strHtml)
  {
   string [] aryReg ={
          @"<script[^>]*?>.*?</script>",
          @"<(///s*)?!?((/w+:)?/w+)(/w+(/s*=?/s*(([""'])(//[""'tbnr]|[^/7])*?/7|/w+)|.{0})|/s)*?(///s*)?>",
          @"([/r/n])[/s]+",
          @"&(quot|#34);",
          @"&(amp|#38);",
          @"&(lt|#60);",
          @"&(gt|#62);",
          @"&(nbsp|#160);",
          @"&(iexcl|#161);",
          @"&(cent|#162);",
          @"&(pound|#163);",
          @"&(copy|#169);",
          @"&#(/d+);",
          @"-->",
          @"<!--.*/n"        
         };

   string [] aryRep = {
           "",
           "",
           "",
           "/"",
           "&",
           "<",
           ">",
           " ",
           "/xa1",//chr(161),
           "/xa2",//chr(162),
           "/xa3",//chr(163),
           "/xa9",//chr(169),
           "",
           "/r/n",
           ""
          };

   string newReg =aryReg[0];
   string strOutput=strHtml;
   for(int i = 0;i<aryReg.Length;i++)
   {
    Regex regex = new Regex(aryReg[i],RegexOptions.IgnoreCase );
    strOutput = regex.Replace(strOutput,aryRep[i]);
  
   }

   strOutput.Replace("<","");
   strOutput.Replace(">","");
   strOutput.Replace("/r/n","");


   return strOutput;
  }

4.到了后面就是入庫了,這個大家都懂了吧.但是我還有點問題就是,在我寫數(shù)據(jù)的時候,出了EXCEPTION,說我的字段太長了,不能寫進(jìn)到數(shù)據(jù)庫,我用的是access,我試驗下用SQL吧.

5.大家有什么好的建議給我留個言賽.共同進(jìn)步嘛.

出處:http://jetadv.VEVb.com/archive/2006/02/18/333213.html


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 岳池县| 景谷| 六枝特区| 安义县| 武强县| 大洼县| 临洮县| 临泉县| 巍山| 建昌县| 张掖市| 吉水县| 和政县| 灌阳县| 阳东县| 定南县| 中牟县| 海盐县| 卫辉市| 礼泉县| 青岛市| 尼木县| 东兰县| 沧源| 灵武市| 乌拉特后旗| 延寿县| 桐梓县| 四子王旗| 天柱县| 曲靖市| 怀化市| 中江县| 万源市| 贺州市| 秦皇岛市| 云阳县| 桂平市| 平昌县| 宁南县| 新龙县|