MrLuo93
一身气质范
2017-08-08 11:45

异常:Cookie value must not be null

10
  • 爬虫

/**
* 入口
* @param args
*/
public static void main(String[] args) {
System.out.println("输出什么?");
Login login = new Login();
login.getPersonInfo();
}

// 返会一个list对象
public List<String> getPersonInfo() {// 返回一个list对象
    List<String> list = new ArrayList<String>();
    try {
        // 得到session ,进行模拟登陆,(如果有验证码,我就不知道了)。--博客园老牛大讲堂
        Connection.Response res = Jsoup.connect("http://www.51job.com")
                .data(
                        "loginname", "15217727459"
                        , "password", "15217727459."
                )// 进行模拟登陆
                .method(Connection.Method.POST).timeout(10000).execute();// 设置请求时间和登陆用的用户名,密码。

// Document doc = res.parse();
// 根据session进行爬虫
// 注释:不是所有网站他们都需要cook,也不是所有的网站cook都是iPlanetDirectoryPro。
// 不同网站网址的cookie不一样。而且每次访问都不一样,所以不要想着把session保存起来。
String guid = res.cookie("guid");
String _ujz = res.cookie("_ujz");

        System.out.println("guid === " + guid);
        System.out.println("_ujz === " + _ujz);

        Document objectDoc = Jsoup
                .connect("http://i.51job.com/resume/resume_preview.php?lang=c&resumeid=358968976&3658907287")// 里面的网址(就是你想要爬取的网页)
                .cookie("guid", guid)
                .cookie("_ujz", _ujz) // 异常提示行
                .timeout(10000).post();// 设置请求的时间(这里设置的请求时间是10秒)
        System.out.println("objectDoc === " + objectDoc);
        Element htmlElement = objectDoc.getElementsByClass("name").get(0);// 得到class为name的第一个对象
        Elements trElements = htmlElement.getElementsByTag("tr");// 得到tr标签的对象

        System.out.println(trElements.size());// 输出多少个tr标签

        for (int i = 1; i < trElements.size(); i++) {
            Elements divElments = trElements.get(i).getElementsByAttributeValue("align", "left");// 根据class进行得到对象。
            for (int j = 0; j < trElements.size(); j++) {
                Element d = divElments.get(j);// 获取每一个对象
                list.add(d.text());// 得到这个对象对应的值
            }
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
    return list;
}
  • 点赞
  • 回答
  • 收藏
  • 复制链接分享

2条回答