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

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

Jsoup 抓取网页信息(1) 抓取 国际疾病码

例如抓取网页:http://www.findacode.com/code-set.php?set=CPT 上的 CPT codes

登录前,显示如下:

Jsoup 抓取网页信息(2) 需要Login的网页信息抓取_第1张图片

登录后显示:

Jsoup 抓取网页信息(2) 需要Login的网页信息抓取_第2张图片

我们要抓取的信息是登录后显示的内容。

解决这个问题的方法很简单。Jsoup给我们提供了cookies的功能,我们只要将我们自己账号登录的cookies传递给Jsoup就可以实现登录用户的访问。

1。 首先,登录自己的账号。

2。然后,在chrome中 Chrome -> setting->Content settings->Cookies->"All cookies and site data" 找到find www.findacode.com 对应的cookies

如下图:Jsoup 抓取网页信息(2) 需要Login的网页信息抓取_第3张图片

从图中可以看出这里有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();

...


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

你可能感兴趣的:(java,学习)