使用C#中的asp.net表单登录屏幕抓取网站?

是否可以为受表单登录保护的网站编写屏幕抓取器。 当然,我可以访问该网站,但我不知道如何登录该网站并将我的凭据保存在C#中。

此外,C#中的任何一个很好的屏幕刮板示例都会非常受欢迎。

这已经完成了吗?

这很简单。 您需要自定义登录(HttpPost)方法。

你可以想出这样的东西(这样你就可以在登录后得到所有需要的cookie,你只需将它们传递给下一个HttpWebRequest):

public static HttpWebResponse HttpPost(String url, String referer, String userAgent, ref CookieCollection cookies, String postData, out WebHeaderCollection headers, WebProxy proxy) { try { HttpWebRequest http = WebRequest.Create(url) as HttpWebRequest; http.Proxy = proxy; http.AllowAutoRedirect = true; http.Method = "POST"; http.ContentType = "application/x-www-form-urlencoded"; http.UserAgent = userAgent; http.CookieContainer = new CookieContainer(); http.CookieContainer.Add(cookies); http.Referer = referer; byte[] dataBytes = UTF8Encoding.UTF8.GetBytes(postData); http.ContentLength = dataBytes.Length; using (Stream postStream = http.GetRequestStream()) { postStream.Write(dataBytes, 0, dataBytes.Length); } HttpWebResponse httpResponse = http.GetResponse() as HttpWebResponse; headers = http.Headers; cookies.Add(httpResponse.Cookies); return httpResponse; } catch { } headers = null; return null; } 

当然,这已经完成了。 我做了几次。 这(通常)称为屏幕抓取或网页抓取。

您应该看一下这个问题 (并且还要浏览标签“ screen-scraping ”下的问题。请注意,Scraping不仅涉及从Web资源中提取数据。还涉及向在线表单提交数据以模仿提交输入(例如登录表单)时用户的操作。