winform怎么实现登陆一个网站并抓取这个网站的数据 特别是怎么实现用户登陆网站后抓取登陆的页面数据,想知道怎么实现程序登陆。做过的朋友可以指点下给,谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你可以用HttpWebRequest他可以模拟登陆下面我自己的网站里的例子用来实现模拟提交获取违章查询的...希望对你有用网址是 http://www.yocs.cn/Weizhang.aspxprivate string a(string filename) { HttpWebRequest request = WebRequest.Create("http://www.csjxj.com/validateimg.php") as HttpWebRequest; request.Referer = "http://www.csjxj.com/wzcx.php"; request.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1)"; request.Method = WebRequestMethods.File.DownloadFile; request.ContentType = "application/x-www-form-urlencoded"; request.Accept = "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, */*"; request.CookieContainer = new CookieContainer(); HttpWebResponse response = request.GetResponse() as HttpWebResponse; Stream stream = response.GetResponseStream(); FileStream FS = new FileStream(Server.MapPath(filename), FileMode.Create, FileAccess.ReadWrite); BinaryWriter write = new BinaryWriter(FS, Encoding.Default); BinaryReader reader = new BinaryReader(stream, Encoding.Default); byte[] bs = new byte[256]; while (reader.Read(bs, 0, 256) > 0) { write.Write(bs); } reader.Close(); write.Close(); FS.Close(); FS.Dispose(); stream.Close(); response.Close(); return request.CookieContainer.GetCookieHeader(new Uri("http://www.csjxj.com")); }[AcceptVerbs(HttpVerbs.Get)] public ActionResult Weizhang() { string filename = "/Weizhang/" + Guid.NewGuid().ToString().Replace("-", String.Empty) + ".bmp"; ViewData["iCodePath"] = filename; //CookieContainer _CookieContainer = request.CookieContainer.; TempData["YOCS_COOKIE"] = a(filename); ViewData["Content"] = ""; return View(); } [AcceptVerbs(HttpVerbs.Post)] public ActionResult Weizhang(FormCollection form) { HttpWebRequest request = WebRequest.Create("http://www.csjxj.com/wzcx.php") as HttpWebRequest; string postString = String.Format(@"cp={0}&type={1}&cj={2}&s_validate={3}&Submit2={4}", HttpUtility.UrlEncode(form["fChepai"], Encoding.GetEncoding("GB2312")), form["fType"], form["fFadongji"], form["fCode"], HttpUtility.UrlEncode("提交", Encoding.GetEncoding("GB2312"))); byte[] postData = Encoding.ASCII.GetBytes(postString); request.ContentLength = postData.Length; request.KeepAlive = true; request.AllowAutoRedirect = false; request.CookieContainer = new CookieContainer(); request.CookieContainer.SetCookies(new Uri("http://www.csjxj.com/wzcx.php"), TempData["YOCS_COOKIE"].ToString()); request.Accept = "application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, application/x-shockwave-flash, application/x-silverlight, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*"; request.Method = "post"; request.Referer = "http://www.csjxj.com/wzcx.php"; request.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; CIBA; .NET4.0C; .NET4.0E)"; request.ContentType = "application/x-www-form-urlencoded"; Stream S = request.GetRequestStream(); S.Write(postData, 0, postData.Length); S.Close(); HttpWebResponse response = request.GetResponse() as HttpWebResponse; Stream ST = response.GetResponseStream(); StreamReader r = new StreamReader(ST, Encoding.GetEncoding("GB2312")); String content = r.ReadToEnd(); string source = content; response.Close(); content = Regex.Match(content, @"<td colspan=5>([\s\S]+?)</td>", RegexOptions.IgnoreCase).Groups[1].Value; if (content.IsEmpty() || content.IsMatch(@"^\s*$")) { content = Regex.Match(source, @"<table width=""510"" border=1 align=""center"" style=""word-break:break-all;"" cellspacing=""1"" bordercolorlight=""#FFFFFF"" bordercolordark=""#03599C"" cellpadding=""1"" height=""20"">[\s\S]+?</table>", RegexOptions.IgnoreCase).Value; } ViewData["Content"] = content; string filename = "/Weizhang/" + Guid.NewGuid().ToString().Replace("-", String.Empty) + ".bmp"; ViewData["iCodePath"] = filename; //CookieContainer _CookieContainer = request.CookieContainer.; TempData["YOCS_COOKIE"] = a(filename); return View(); } 忘记说了.....他需要你访问后的session的所以,这个,和你登陆也是一样的道理的.....你只要加一个networkcreditial就行了 他那个是用asp.net mvc做的,这个和本问题没有直接联系 using System.Web;/// <summary> /// 根据链接地址 获取 Html文本 /// </summary> public static string Get_Html(string Url) { System.Net.WebClient wc = new System.Net.WebClient(); Byte[] pageData = wc.DownloadData(Url ); wc.Credentials = System.Net.CredentialCache.DefaultCredentials; return System.Text.Encoding.Default.GetString(pageData); } http://topic.csdn.net/u/20100529/12/6ff4d5cb-995a-4723-83e4-883cb54c3f0c.html我写的!不过没写完!懒的写了!可以看怎么抓数据! 【zhao_zps】如果需要登陆的网站该怎么实现呢? 你可以传COOKIE进去http://hi.baidu.com/panyuan1988/blog/item/b1904e955538d46154fb96f7.html c#编写dll供pb调用问题 C# 加载指定路径的dll文件 C# 读取xml字符串中某个节点的属性 基于Document Explorer 2005的vs 2005帮助文档出错 请问解压cab文件的dos命令是什么啊?谢谢 关于c#打印一个容器内的所有控件的问题,高手的挑战(100分) C#.net实现用户名和密码登录网站,登录成功返回true 50分请高手指教关于socket问题 注释的问题!请指点! Combox 无法绑定到新的显示成员。 把Excel导入数据库 帮我看看哪里错了?
他可以模拟登陆
下面我自己的网站里的例子
用来实现模拟提交获取违章查询的...
希望对你有用
网址是 http://www.yocs.cn/Weizhang.aspxprivate string a(string filename)
{
HttpWebRequest request = WebRequest.Create("http://www.csjxj.com/validateimg.php") as HttpWebRequest;
request.Referer = "http://www.csjxj.com/wzcx.php";
request.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1)";
request.Method = WebRequestMethods.File.DownloadFile;
request.ContentType = "application/x-www-form-urlencoded";
request.Accept = "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, */*";
request.CookieContainer = new CookieContainer();
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
Stream stream = response.GetResponseStream();
FileStream FS = new FileStream(Server.MapPath(filename), FileMode.Create, FileAccess.ReadWrite);
BinaryWriter write = new BinaryWriter(FS, Encoding.Default);
BinaryReader reader = new BinaryReader(stream, Encoding.Default);
byte[] bs = new byte[256];
while (reader.Read(bs, 0, 256) > 0)
{
write.Write(bs);
}
reader.Close();
write.Close();
FS.Close();
FS.Dispose();
stream.Close();
response.Close();
return request.CookieContainer.GetCookieHeader(new Uri("http://www.csjxj.com"));
}[AcceptVerbs(HttpVerbs.Get)]
public ActionResult Weizhang()
{
string filename = "/Weizhang/" + Guid.NewGuid().ToString().Replace("-", String.Empty) + ".bmp";
ViewData["iCodePath"] = filename;
//CookieContainer _CookieContainer = request.CookieContainer.;
TempData["YOCS_COOKIE"] = a(filename);
ViewData["Content"] = "";
return View();
} [AcceptVerbs(HttpVerbs.Post)]
public ActionResult Weizhang(FormCollection form)
{
HttpWebRequest request = WebRequest.Create("http://www.csjxj.com/wzcx.php") as HttpWebRequest; string postString = String.Format(@"cp={0}&type={1}&cj={2}&s_validate={3}&Submit2={4}",
HttpUtility.UrlEncode(form["fChepai"], Encoding.GetEncoding("GB2312")),
form["fType"],
form["fFadongji"],
form["fCode"],
HttpUtility.UrlEncode("提交", Encoding.GetEncoding("GB2312")));
byte[] postData = Encoding.ASCII.GetBytes(postString);
request.ContentLength = postData.Length; request.KeepAlive = true;
request.AllowAutoRedirect = false;
request.CookieContainer = new CookieContainer();
request.CookieContainer.SetCookies(new Uri("http://www.csjxj.com/wzcx.php"), TempData["YOCS_COOKIE"].ToString());
request.Accept = "application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, application/x-shockwave-flash, application/x-silverlight, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*";
request.Method = "post";
request.Referer = "http://www.csjxj.com/wzcx.php";
request.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; CIBA; .NET4.0C; .NET4.0E)";
request.ContentType = "application/x-www-form-urlencoded"; Stream S = request.GetRequestStream();
S.Write(postData, 0, postData.Length);
S.Close(); HttpWebResponse response = request.GetResponse() as HttpWebResponse;
Stream ST = response.GetResponseStream();
StreamReader r = new StreamReader(ST, Encoding.GetEncoding("GB2312"));
String content = r.ReadToEnd();
string source = content;
response.Close();
content = Regex.Match(content, @"<td colspan=5>([\s\S]+?)</td>", RegexOptions.IgnoreCase).Groups[1].Value; if (content.IsEmpty() || content.IsMatch(@"^\s*$"))
{
content = Regex.Match(source, @"<table width=""510"" border=1 align=""center"" style=""word-break:break-all;"" cellspacing=""1"" bordercolorlight=""#FFFFFF"" bordercolordark=""#03599C"" cellpadding=""1"" height=""20"">[\s\S]+?</table>", RegexOptions.IgnoreCase).Value;
}
ViewData["Content"] = content;
string filename = "/Weizhang/" + Guid.NewGuid().ToString().Replace("-", String.Empty) + ".bmp";
ViewData["iCodePath"] = filename;
//CookieContainer _CookieContainer = request.CookieContainer.;
TempData["YOCS_COOKIE"] = a(filename); return View();
}
他需要你访问后的session的
所以,这个,和你登陆也是一样的道理的.....你只要加一个networkcreditial就行了
using System.Web;/// <summary>
/// 根据链接地址 获取 Html文本
/// </summary>
public static string Get_Html(string Url)
{
System.Net.WebClient wc = new System.Net.WebClient();
Byte[] pageData = wc.DownloadData(Url );
wc.Credentials = System.Net.CredentialCache.DefaultCredentials;
return System.Text.Encoding.Default.GetString(pageData);
}
我写的!
不过没写完!
懒的写了!
可以看怎么抓数据!
http://hi.baidu.com/panyuan1988/blog/item/b1904e955538d46154fb96f7.html