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

优采云 发布时间: 2021-10-21 20:13

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

  4.输入账号密码,确认登录,得到如下数据:

  

  关注POST请求中的Url和postdata,以及服务器返回的cookies

  

  cookie 收录登录信息。为安全起见,我们可以将所有 4 个 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(网上也有人推荐使用htmlparser,但通过我个人的对比,htmlparser在效率和简单性上都远不如NSoup)

  由于NSoup的网上教程比较好,也可以参考JSoup的教程:

  最后,给我一些我从 网站 抓取的数据:

  

  纸上谈兵,我知道我必须亲自去做。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线