爬虫三:小案例模拟登陆慢慢买并获取用户积分

忘是亡心i 2024-04-19 13:02 103阅读 0赞
  1. public class ReptileLogin {
  2. @Test
  3. public void Login() throws Exception{
  4. //确定url:
  5. String indexUrl = "http://home.manmanbuy.com/login.aspx";
  6. //2、发送请求,获取数据
  7. CloseableHttpClient httpClient = HttpClients.createDefault();
  8. HttpPost post = new HttpPost(indexUrl);
  9. //设置请求参数
  10. List<BasicNameValuePair> params = new ArrayList<BasicNameValuePair>();
  11. params.add(new BasicNameValuePair("__VIEWSTATE","/wEPDwULLTIwNjQ3Mzk2NDFkGAEFHl9fQ29udHJvbHNSZXF1aXJlUG9zdEJhY2tLZXlfXxYBBQlhdXRvTG9naW4voj01ABewCkGpFHsMsZvOn9mEZg=="));
  12. params.add(new BasicNameValuePair("__EVENTVALIDATION","/wEWBQLW+t7HAwLB2tiHDgLKw6LdBQKWuuO2AgKC3IeGDJ4BlQgowBQGYQvtxzS54yrOdnbC"));
  13. params.add(new BasicNameValuePair("txtUser","账户名"));
  14. params.add(new BasicNameValuePair("txtPass","密码"));
  15. params.add(new BasicNameValuePair("btnLogin","登录"));
  16. //设置请求头信息
  17. /*网站加了防盗链,必须设置是从哪个网页跳转过来的*/
  18. post.setHeader("Referer","http://home.manmanbuy.com/login.aspx");
  19. post.setHeader("User-Agent","Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36");
  20. //将参数加入请求体
  21. HttpEntity entity = new UrlEncodedFormEntity(params);
  22. post.setEntity(entity);
  23. //执行
  24. CloseableHttpResponse response = httpClient.execute(post);
  25. httpClient.close();
  26. //判断是否成功跳转
  27. if(response.getStatusLine().getStatusCode()==302){
  28. //获取响应头信息
  29. Header[] locations = response.getHeaders("Location");
  30. //System.out.println(locations[0].getValue());
  31. /*跳转之后的url:http://home.manmanbuy.com/usercenter.aspx
  32. * locations[0].getValue():usercenter.aspx
  33. * */
  34. //拼接新的url
  35. String new_url = "http://home.manmanbuy.com"+locations[0].getValue();
  36. //拿到响应头中Set-Cookie的值
  37. Header[] cookies = response.getHeaders("Set-Cookie");
  38. //重新发送请求,获取数据
  39. httpClient = HttpClients.createDefault();
  40. HttpGet get = new HttpGet(new_url);
  41. //重新设置请求头信息(因为url变,网页重定向,需要手动设置用户cookie信息)
  42. //Cookie的默认写法,[0]为隐藏,[1]可以直接看到
  43. get.setHeader("Cookie",cookies[0].getValue()+" "+cookies[1].getValue());
  44. CloseableHttpResponse execute_info = httpClient.execute(get);
  45. String info = EntityUtils.toString(execute_info.getEntity(), "gb2312");
  46. /*-----------------------------------------------------------*/
  47. //解析数据
  48. Document parse = Jsoup.parse(info);
  49. Element element = parse.select("#aspnetForm > div.udivright > div:nth-child(2) > table > tbody > tr > td:nth-child(1) > table:nth-child(2) > tbody > tr > td:nth-child(2) > div:nth-child(1) > font").get(0);
  50. //输出当前用户账户积分
  51. System.out.println(element.text());
  52. }
  53. }
  54. }

发表评论

表情:
评论列表 (有 0 条评论,103人围观)

还没有评论,来说两句吧...

相关阅读