想实现采集需要登录的页面,百度,google了一下,也在论坛搜了一下发现大部分都是用“post”的方法获得cookie后在打开要采集的页面但我看了火车头采集器,貌似用了很先进的方法就是在设置规则的时候,用火车头自带的浏览器打开需要登录的网站,登录一下,然后它会自动记录cookie,然后每次采集它就会自动登录的虽然不知道它自带的浏览器是怎么样的但感觉就是先获得一个登录后的cookie,保存到数据库,每次采集的时候传一下cookie我现在已经得到了一个cookie
但不知道怎么把cookie传到HttpWebRequest中
但不知道怎么把cookie传到HttpWebRequest中
解决方案 »
- 用C#(winfrom)实现做一个网页编辑器,怎么做?(向各位大侠请教、、、、、)
- 用Javascript实现把页面上所有文本框的值都赋成Hello
- FindControl()属于那个库
- C# 用指定的用户和密码,打开指定的文档目录
- 代码怎么写
- c#中的Bitmap类型,怎么传递给c++中的一结构
- 有没有人研究过Duwamish7的示例程序
- 怎样得到上一页面的URL呢?
- datagrid中列的数据格式限定表达式如何写 ,数值类型的,比如数值类型需要保留2为小数?
- 我知道一个TEST.DLL库中的方法和参数,我在C#里怎么调用这几个方法?在线等,很简单,但我不会
- 我有一段字符串(html的表格),如何转换成datatable?
- 急急,小女子遇到c#treeview绑定数据的问题,请问一下大家怎么实现像gridview有coloumnhead,能否实现如图所示,并且可以拖放。
string url = tb1.Text;
string content;
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(url);
myRequest.Method = "POST";
myRequest.KeepAlive = true;
myRequest.ContentType = "application/x-www-form-urlencoded";
CookieContainer cookieCon = new CookieContainer();
myRequest.CookieContainer = cookieCon;
myRequest.CookieContainer.SetCookies(new Uri(url), cookieheader); HttpWebResponse response = (HttpWebResponse)myRequest.GetResponse();
Stream s = response.GetResponseStream();
StreamReader objReader = new StreamReader(s, System.Text.Encoding.GetEncoding("GB2312"));
content = objReader.ReadToEnd();
我这段代码获取的到还是未登录的!
string strFirstPageRequestUrl = "http://xxx.com";
HttpWebRequest reqFirstPage = (HttpWebRequest)WebRequest.Create(strFirstPageRequestUrl);
//Utility.Get="GET";
reqFirstPage.Method = Utility.Get;
reqFirstPage.KeepAlive = true;
reqFirstPage.AllowAutoRedirect = true;
reqFirstPage.UseDefaultCredentials = true;
//设置cookie信息
reqFirstPage.CookieContainer = new CookieContainer();
//reqFirstPage.Proxy = wp;
//userAgent 属性是一个只读的字符串,声明了浏览器用于 HTTP 请求的用户代理头的值
// Utility.UserAgent= "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 1.1.4322; .NET CLR 3.5.20404)";
reqFirstPage.UserAgent = Utility.UserAgent; //得到请求之后的返回值 HttpWebResponse resFirstPage = (HttpWebResponse)reqFirstPage.GetResponse();
CookieCollection ccFirstPage = new CookieCollection();
//Utility.SetCookie="Set-Cookie"
if (resFirstPage.Headers[Utility.SetCookie] != null)
{
Debug.WriteLine("Headers 不为空 值为 >> "+reqFirstPage.Headers[Utility.SetCookie]);
//给Cookie集合 添加Cookie信息
//当需要获得服务器返回的Cookie的话,可以通过wrp.Headers.Get("Set-Cookie")方法来获取。
ccFirstPage.Add(Utility.GetAllCookiesFromHeader(resFirstPage.Headers[Utility.SetCookie], resFirstPage.ResponseUri.Host));
}
//得到返回的页面信息 得到登录页面信息
StreamReader sr1 = new StreamReader(resFirstPage.GetResponseStream());
String strFirstPage = sr1.ReadToEnd();
Debug.WriteLine("返回的信息 >> "+strFirstPage+"\n");
sr1.Close();
string strLoginPageUrlReferer = resFirstPage.ResponseUri.ToString();
resFirstPage.Close();
reqFirstPage.Abort();