java|Jsoup 抓取网页信息(2) 需要Login的网页信息抓取

有时候抓取网页信息的时候,有些网页需要先登录才能查看到真正的内容。这样用我们上一篇文章的方法是无法直接抓取数据的。
Jsoup 抓取网页信息(1) 抓取 国际疾病码

例如抓取网页:http://www.findacode.com/code-set.php?set=CPT 上的 CPT codes
登录前,显示如下:
java|Jsoup 抓取网页信息(2) 需要Login的网页信息抓取
文章图片


登录后显示:
java|Jsoup 抓取网页信息(2) 需要Login的网页信息抓取
文章图片


我们要抓取的信息是登录后显示的内容。
解决这个问题的方法很简单。Jsoup给我们提供了cookies的功能,我们只要将我们自己账号登录的cookies传递给Jsoup就可以实现登录用户的访问。
1。 首先,登录自己的账号。
2。然后,在chrome中 Chrome -> setting->Content settings->Cookies->"All cookies and site data" 找到find www.findacode.com 对应的cookies
如下图:java|Jsoup 抓取网页信息(2) 需要Login的网页信息抓取
文章图片

从图中可以看出这里有4个cookie的键值我们需要关心。
3。使用Jsoup 加载cookies

Map cookies = null; cookies = new HashMap(); cookies.put("PHPSESSID", "pue5b6f642cu21v7qun47hs3b5"); cookies.put("__ar_v4", "CQJDWEV345EJ7P3MLKOZX3%3A20151008%3A3%7CZFX3A7FMXJARPKT2GZ64XZ%3A20151008%3A3%7CYUDUMC5DENC6LMIX6UQP3E%3A20151008%3A3"); cookies.put("fac_type", "F"); cookies.put("show_sign_in", "T"); Document doc = Jsoup.connect(pageUrl).cookies(cookies).get(); ...

【java|Jsoup 抓取网页信息(2) 需要Login的网页信息抓取】

4。连接成功后,使用第一篇文章的方法抓取数据。

    推荐阅读