Jsoup 使用问题

版权声明:欢迎转载,转载请注明出处 https://blog.csdn.net/keplerpig/article/details/81701071

1、问题描述

最近在用Jsoup 爬数据,对方是API接口,返回的是JSON结构,但是在获取数据后发现有部分数据缺失,其中主要缺失的数据时<img> 标签类的数据。

2、排查过程

2.1、使用Postman 调用接口返回数据正常

2.2、使用jsoup 传入同样的参数,调用后拿到的数据不正确

2.3、对比参数,参数一致,并且去掉大部分参数后postman 返回的结果依然正常 

2.4、浏览器直接调用接口,这时发现一个问题,浏览器解析了<img>标签,但是图片没有显示出来

3、问题定位

通过第二步的排查,前三个排查都没问题,问题出现在第四个现象中,此时我怀疑是因为我用Joup 直接返回的Document对象导致,修改后问题解决

4、解决办法

修改Joup返回方式,不直接返回Docment对象,改为直接返回字符串,如果要提取部分内容,还是要用Document 来解析的

更改前:

 public Document get(String url) throws IOException {
        Document doc = Jsoup.connect(url)
                .header("Accept-Encoding", "gzip")
                .header("Content-Type", "application/x-www-form-urlencoded")
                .userAgent("Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1")
                .ignoreContentType(true).referrer(url).get();
        return doc;
    }

更改后:

public String get(String url) throws IOException {
        Connection.Response doc = Jsoup.connect(url)
                .header("Accept-Encoding", "gzip")
                .header("Content-Type", "application/x-www-form-urlencoded")
                .userAgent("Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1")
                .ignoreContentType(true).method(Connection.Method.GET).referrer(url).execute();
        String body = doc.body();
        return body;
    }

以上只是个人使用的一次问题记录,也可能是自己使用不对导致获取document对象内容错误。

猜你喜欢

转载自blog.csdn.net/keplerpig/article/details/81701071