所以基本上我希望从一个网页抓取HTML数据-问题是要访问这个页面需要登录。我已经登录了浏览器(IE),但我相信我的代码没有引用相同的浏览器,这就是为什么它需要登录。
这是我目前所做的:
public void HTMLImport(){
string urlAddress = "https://randomWebsite.com/reports/show_report.aspx";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(urlAddress);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
if(response.StatusCode == HttpStatusCode.OK){
Stream receiveStream = response.GetResponseStream();
StreamReader readStream = null;
if(response.CharacterSet == null){
readStream = new StreamReader(receiveStream);
}
else{
readStream = new StreamReader(receiveStream,Encoding.GetEncoding(response.CharacterSet));
}
string data = readStream.ReadToEnd();
response.Close();
readStream.Close();
// This is showing the HTML data for when person is not logged in -
Console.WriteLine(data);
}
你需要从你的c#代码中执行登录,也许通过将登录表单发送回具有正确凭据的服务器(在这里写代码太长了),然后读取会话cookie的响应页面(大多数登录函数将回复一个身份验证cookie,你必须在进一步的请求中包含)。
没有更多的细节,不幸的是我不能帮助更多。
要做到这一点,首先,您应该知道网站通常使用cookie来保持会话。
- 向web服务器发送请求并获得响应,您将在响应HEAD中找到session_id。(在。net中通常使用asp.net sessionid)。
- 向web服务器发送登录请求并发布用户名和密码,您应该添加ASP。 当前请求和后续请求中的NET_SessionId cookie。
- 发送"https://randomWebsite.com/reports/show_report.aspx"与ASP。NET_SessionId cookie,您将发现您已登录到web服务器。