登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

面包会有的

... ...

 
 
 

日志

 
 

采集需要登陆的内容,即破session  

2008-08-06 15:56:31|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

1.在下载数据的开始,有些网站是要登录了才能看到相应的数据,这个就需要我们发送登录用户名和密码了,但我是登录了,但他服务器也不是垃圾,在他那里重定向了,共产生了2个SESSION,这第2个SESSION我就不知道如何捕抓.于是我就投机^-^,用软件将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");

这样就欺骗了服务器了,哈哈

2.第二部就是代码下载

byte[] myDataBuffer = myWebClient.DownloadData(remoteUri);

 download = Encoding.Default.GetString(myDataBuffer);

3.第3部就是数据的匹配了,我是将流读取到数据里,然后用IndexOf得到2个关键字段的位置,然后用Substring取出来的,我知道这很笨,但用正则表达式难啊(谁会的指点我下),匹配完了得到的字符串我就用以下的函数去掉了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.到了后面就是入库了,这个大家都懂了吧.但是我还有点问题就是,在我写数据的时候,出了EXCEPTION,说我的字段太长了,不能写进到数据库,我用的是ACCESS,我试验下用SQL吧.

5.大家有什么好的建议给我留个言赛.共同进步嘛.

  评论这张
 
阅读(895)| 评论(1)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018