爬虫获取ajax请求数据

做网页爬虫的时候时常会碰到ajax动态请求的数据,往往这些数据还很有用,以前我做的时候都是用selenium+plantomjs来模拟网页解析,但总感觉这样的方法治标不治本。这样的数据肯定是可以用抓包的方式抓取到的,关键是怎么完成代码。
要抓取的xhr信息如下:
这个界面谷歌浏览器F12就能出现,点开能找到我们想要的请求URL和其他的一些信息
图片说明
代码上我用java的Jsoup实现:

        Map headers = new HashMap();
        headers.put("X-Requested-With", "XMLHttpRequest");
        headers.put("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36");
        headers.put("Referer", "xxxxxxxxx");
        Document res = Jsoup.connect("xxxxxxxxx")
                        .headers(headers)
                        .ignoreContentType(true)
                        .get();
        Element body = res.body();
        System.out.println(body);

这里注意一下我设置了headers,不设置可能会获取不到相关信息。
其中重点讲一下Referer这个请求项,Rerferer是一个常见的用来防止网页被本站之外获取的Header,做爬虫时一定要确保Referer的设置,不然可能抓不到数据。

然后由于这个网页的内容类型比较特殊,用Jsoup可能会出现这个错误:
Unhandled content type. Must be text/*, application/xml, or application/xhtml+xml.
把ignoreContentType(true)加上就好了。

后面就是内容解析的活了,这里就不多说了,以后有时间再写吧

你可能感兴趣的:(爬虫)