日期:2014-05-17  浏览次数:20462 次

网页抓取数据时,如何过登陆验证?? 求大神指点
如题, 这是小弟的网页抓取数据代码
C# code

while (resultType)
            {
                string result = string.Empty;
                string url = "http://search.zhenai.com/search/getfastmdata.jsps?gender=1&agebegin=25&ageend=35&workcityprovince=" + txtCityCode.Text + "&workcitycity=-1&Marriage=-1&Salary=-1&Education=-1&h1=-1&h2=-1&photo=1&currentpage=" + pageIndex;
                HttpWebRequest hwr = (HttpWebRequest)HttpWebRequest.Create(url);
                hwr.Method = "GET";
                hwr.Referer = "localhost";
                using (WebResponse wr = hwr.GetResponse())
                {
                    StreamReader sr = new StreamReader(wr.GetResponseStream(), Encoding.Default);
                    result = sr.ReadToEnd();
                    wr.Close();
                }
                if (result.Contains(errorstr))
                {
                    resultType = false;
                    pageIndex = 1;
                    lblsuccess.Text = "当前城市数据采集完毕!";
                    MessageBox.Show("当前城市数据采集完毕!");
                }
                else
                {
                    //抓取数据代码
                }
             }



但是我遇到个问题。 当我抓下来列表的用户连接之后, 访问之。 全部跳转到注册页面去了。 原因是没有通过登录验证, 这可如何是好?

------解决方案--------------------
不太可能,唯一可行的办法是你在采集前,先手工登录,再进行采集。
如果人没有用到验证码,可以做成自动登录,再采集。

如果用了验证码,网上有验证码识别的例子,可以用下,但效率太低,识别率不高,尤其是在asp.net下,还是不可避免的需要人工干预的。