c#抓取网页数据(保险起见输入账号密码)
优采云 发布时间: 2021-09-19 07:06c#抓取网页数据(保险起见输入账号密码)
4.输入账户密码,确认登录,获取以下数据:
关注post请求中的URL和postData,以及服务器返回的cookie
cookie收录登录信息。为了安全起见,我们可以将这四个cookie值传递给服务器
首先给出c#发送post请求的代码:(目的是获取服务器返回的cookie)
string Url = "URL";
string postDataStr = "POST Data";//因为上面都是离散的键值对,我们可以从Stream中直接找到postDataStr
//登录并获取cookie
HttpPost(Url, postDataStr, ref cookie);
private string HttpPost(string Url, string postDataStr, ref CookieContainer cookie)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
byte[] postData = Encoding.UTF8.GetBytes(postDataStr);
request.ContentLength = postData.Length;
request.CookieContainer = cookie;
Stream myRequestStream = request.GetRequestStream();
myRequestStream.Write(postData, 0, postData.Length);
myRequestStream.Close();
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
response.Cookies = cookie.GetCookies(response.ResponseUri);
Stream myResponseStream = response.GetResponseStream();
StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
string retString = myStreamReader.ReadToEnd();
myStreamReader.Close();
myResponseStream.Close();
return retString;
}
通过cookie,您可以从网站获取所需的数据,然后发送get请求
由于服务器返回HTML,如何从大量HTML中快速获取所需信息?在这里,我们可以引用一个高效而强大的第三方库nsoup(有些人建议在互联网上使用HTMLPasser,但通过我个人的比较,我发现HTMLPasser在效率和简单性方面远远不如nsoup)
由于nsoup上的在线教程相对较少,您也可以参考jsoup上的教程:
最后,给出了我从网站获取的一些数据:
我在纸上感觉肤浅。我绝对知道我必须练习