应用背景
在抓取某些网站的数据时,需要登陆才能得到含有数据的HTML文档,此时直接获取Document会什么都得不到。解决办法就是,先自己打开浏览器,登录目标网站,然后获取浏览器的cookie字符,把它复制粘贴到Jsoup参数中即可解决此问题,拿到浏览器的cookie进行获取数据,目标网站就会把Jsoup当作刚刚登陆网站的浏览器对待。
获取浏览器的cookie
打开浏览器(自测谷歌浏览器和火狐浏览器都可以),按下F12打开开发者模式,点击Console打开控制台,键入命令:javascript:alert(document.cookie),回车即可看到浏览器在当前网站的缓存
使用下面函数即可将获取到的cookie转化为键值对形式,以用在jsoup中
public HashMap<String, String> convertCookie(String cookie) {
HashMap<String, String> cookiesMap = new HashMap<String, String>();
String[] items = cookie.trim().split(";");
for (String item:items) cookiesMap.put(item.split("=")[0], item.split("=")[1]);
return cookiesMap;
}
在Jsoup中,以如下方式即可利用Cookie
Document document = Jsoup.connect("https://www.google.com").cookies(cookiesMap).get();