c#抓取网页数据(保险起见输入账号密码)

优采云 发布时间: 2021-09-19 07:06

  c#抓取网页数据(保险起见输入账号密码)

  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上的教程:

  最后,给出了我从网站获取的一些数据:

  

  我在纸上感觉肤浅。我绝对知道我必须练习

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线