利用Java的Jsoup模拟登录网站,爬取数据

前一篇是写爬取静态网页的数据,但是在现实的生活中,我们多数浏览的是动态网页,在爬取动态网页我们需要了解cookie是什么,因为我们通过cookie来让网站知道我们是已经通过网站的登录验证的。
原理:我们在第一次获取登录表单数据并携带用户的信息去仿登录,成功后我们可以获取登录后的cookie信息,以便我们爬取登录后其他网页的数据。

使用cookie的原因:在http协议是无状态的,传统服务器只能被动响应请求,每当服务器获取到请求,并为了能够区分每一个客户端,需要客户端发送请求时发送一个标识符(cookie)。也就是说用来区分客户端的用户。

服务器根据报文中cookie,进行区分客户端浏览器.
第一步:我们需要了解登录网页的表单的数据,它具体发出的请求有什么数据,其实大多数都是账号和密码,我们可以按F12查看源码,看到源码就知道,提交的from表单就是两个参数。
在这里插入图片描述
第二步:我们登录进系统看看请求的内容,登录网站按F12,查看网络信息,如图
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200415110
在network中我们在找到登录表单就是5个参数,前面三个基本不用管,因为它是浏览器可以生成的,我们只注意username和password这两个参数,它是我们登录提交过来的数据。还要获取的是登录后的url,因为有些是用重定向来跳转页面的,所以我们可以在登录成功后的页面单击鼠标右键点查看网页源代码,这样就可以知道网站登录后的真实url。

编写代码:

        Document d= Jsoup.connect("登录的url").get();
        //获取仿登录的数据
        String inputName=d.getElementsByTag("input").get(0).attr("name");
        String inputValue=d.getElementsByTag("input").get(0).val();
        String random=d.getElementById("random").val();
        String token=d.getElementById("token").val();

		//用map来存储数据
        Map map=new HashMap();
        map.put(inputName,inputValue);
        map.put("random",random);
        map.put("token",token);
        map.put("username",userName);
        map.put("password",password);

        //登录,获取cookies
        Connection.Response login=Jsoup.connect("提交登录的url")
                .ignoreContentType(true)
                .followRedirects(true)
                .data(map)
                .method(Connection.Method.POST)
                .execute()
                .charset("utf-8");

		//模拟成功后,自己想获取的数据,并且要求携带cookies数据
        Document index=Jsoup.connect("登录后想获取数据的url").cookies(login.cookies()).get();
        //打印数据网页
        System.out.println(index.html());

就这样,模拟登录网站爬取数据就完成了。具体的数据要自己发挥,重点是分析网页的源代码,才可以快速的获取自己想要的数据。

nice!!!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

echso。。

你的支持是的最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值