熟悉网页数据采集的朋友进
有好多网站需要登录后才可以看内容,这样我写的代码就没法抓取需要的内容了,我尝试过先在ie里登录一次,然后再运行程序,发现还是不行,页面被重定向了,
请问怎么解决???,谢谢
------解决方案--------------------代码中的cookie与ie并不相能.
用httpwebRequest模拟登录.保存cookiecontainer.然后下次抓取网页时再用这个对象
搜索一下相关资料
------解决方案--------------------请自己在程序读取部分保存cookie值. 然后按真实情况登录一次
------解决方案--------------------友情支持一下.
UP
------解决方案--------------------cc.Add(response.Cookies);这句可以不要
------解决方案--------------------看了下页面,action的地址不是login.asp,而是cpp2017(慕白兄)所说的login_enter.asp
------解决方案--------------------呵呵
搞定了就好
------解决方案--------------------cpp2017(慕白兄)
正解
------解决方案--------------------以下是我设计的:
public static string NetDataSelect(string Url, bool allowAutoRedirect, string PostData, ref CookieContainer cookie, System.Text.Encoding EncoderForByte, System.Text.Encoding EncoderForContent)
{
HttpWebRequest request = null;
StreamReader reader = null;
string result = null;
try
{
request = (HttpWebRequest)WebRequest.Create(Url);
request.AllowAutoRedirect = allowAutoRedirect;
request.Timeout = 30 * 1000;
request.ContentType = "application/x-www-form-urlencoded ";
request.CookieContainer = cookie;
request.Referer = Url;
request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; MyIE2; .NET CLR 1.1.4322) ";
if (!String.IsNullOrEmpty(PostData))
{
byte[] data = EncoderForByte.GetBytes(PostData);
request.Method = "POST ";
request.ContentLength = data.Length;
request.GetRequestStream().Write(data, 0, data.Length);
request.GetRequestStream().Flush();
}
reader = new StreamReader(request.GetResponse().GetResponseStream(), EncoderForContent);
result = reader.ReadToEnd();
reader.Close();
}
finally
{
if (reader != null) reader.Close();
}
return result;
}
但是有一个问题就是如果需要验证码,验证码该如何获得呢??
------解决方案--------------------cpp2017(慕白兄) 太强了,,,这都被你找到了。。。。。问题解觉,就给分了