功能说明:抓取需要登陆、并且验证码才能访问的页面,难点在于模仿登陆和验证码
在度娘的帮助下,找了很多的代码,但是,没有一个可以用的。
大概步骤是这样子的,使用HttpWatch抓包,看看登陆的时候post的数据,然后使用代码模拟,但是,我不知道如何获取登陆后的Cookie和抓取的时候也把这个Cookie捎上,而且,另外一个技术点是验证码。有做过这方面的牛人请教下!谢谢!!   
  public void Login(string UserName, string UserPwd, string LoginUrl, out string Txt)
        {
            try
            {
                //定义Cookie容器
                CookieContainer CookieArray = new CookieContainer();
                //创建Http请求
                HttpWebRequest LoginHttpWebRequest = (HttpWebRequest)WebRequest.Create(LoginUrl);
                //登录数据
                string LoginData = string.Format("email={0}&password={1}&operate={2", UserName, UserPwd, "login");
                //数据被传输类型
                LoginHttpWebRequest.ContentType = "application/x-www-form-urlencoded";
                //数据长度
                LoginHttpWebRequest.ContentLength = LoginData.Length;
                //数据传输方法 get或post
                LoginHttpWebRequest.Method = "POST";
                //设置HttpWebRequest的CookieContainer为刚才建立的那个CookieArray  
                LoginHttpWebRequest.CookieContainer = CookieArray;
                //获取登录数据流
                Stream myRequestStream = LoginHttpWebRequest.GetRequestStream();
                //StreamWriter
                StreamWriter myStreamWriter = new StreamWriter(myRequestStream, Encoding.Default);
                //把数据写入HttpWebRequest的Request流  
                myStreamWriter.Write(LoginData);
                //关闭打开对象     
                myStreamWriter.Close();
                myRequestStream.Close();
                //新建一个HttpWebResponse     
                HttpWebResponse myHttpWebResponse = (HttpWebResponse)LoginHttpWebRequest.GetResponse();
                //获取一个包含url的Cookie集合的CookieCollection     
                myHttpWebResponse.Cookies = CookieArray.GetCookies(LoginHttpWebRequest.RequestUri);
                WebHeaderCollection a = myHttpWebResponse.Headers;
                Stream myResponseStream = myHttpWebResponse.GetResponseStream();
                StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.Default);
                Txt = myStreamReader.ReadToEnd();
                //把数据从HttpWebResponse的Response流中读出     
                myStreamReader.Close();
                myResponseStream.Close();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }