python爬虫,用requeests库,json方法获取json数据,拿不出列表的数据,来个boss解答一下

img

第一张和第二张都是json错误

img

#python爬虫,用requeests库,json方法获取json数据,拿不出列表的数据,来个boss解答一下

3,4,5张是html json数据

img

img

img

这也是json错误

img

img

抖音的API接口都是有签名的,首先你需要有签名算法,才可以通过模拟请求,否则是不行的。

  • 以下回答由chatgpt基于相关博客总结生成:

    由于缺乏具体信息和代码片段,我无法准确解决您的问题。请您提供以下信息:

    • 获取JSON数据的代码片段以及错误提示信息
    • 您需要提取的列表数据在JSON中的具体位置
    • 您尝试过哪些方法,但均未能成功提取出列表数据
    • 如果可能,请提供JSON示例数据。

    根据您提供的参考资料,我给出的是几段关于不同问题的代码和解决方案,供您参考,不一定与您的实际问题有关。

    对于段落0中的批量插入方法,需要在使用时传入一个Logistics对象的列表,具体使用方法如下:

    LogisticsMapper logisticsMapper; // 先获取 logisticsMapper 对象
    List<Logistics> list = new ArrayList<>();
    // 假设有多个 Logistics 对象需要插入,可以用循环添加至 list
    logisticsMapper.batchInsert(list);
    

    对于段落1中的静态创建 JsonMessageResult 对象的方法,可以直接调用,例如:

    JsonMessageResult result = JsonMessageResult.success();
    

    可以直接得到一个默认设置的 successful JsonMessageResult 对象。也可以在使用前调用 setResult 设置相应的 code 和 message,例如:

    JsonMessageResult result = JsonMessageResult.success();
    result.setResult(0, "用户不存在");
    

    这样就可以得到相应的 JsonMessageResult 对象了。

    段落2中提到了封装教室属性的类。这个类的基本内容为将所有属性设置为私有,添加构造方法、get()、set() 方法,例如:

    public class Classroom {
        private String id;
        private String category;
        private String capacity;
        private String name;
        private String area;
        private String seat;
        private String vcd;
        private String warm;
    
        public Classroom(String id, String category, String capacity, String name, String area, String seat, String vcd, String warm) {
            this.id = id;
            this.category = category;
            this.capacity = capacity;
            this.name = name;
            this.area = area;
            this.seat = seat;
            this.vcd = vcd;
            this.warm = warm;
        }
    
        public String getId() {
            return id;
        }
    
        public void setId(String id) {
            this.id = id;
        }
    
        public String getCategory() {
            return category;
        }
    
        // 这里省略其他属性的 get 和 set 方法
    }
    

    段落3中介绍了修改日期类型的格式。假如您有一个时间戳需要转化为特定格式的 date 字符串,可以用如下代码实现:

    long timestamp = System.currentTimeMillis();
    SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    String dateString = formatter.format(timestamp);
    

    最后,对于段落4中的实体类 Logistics,可以通过如下代码来获取 JSON 数据并解析提取出列表(List)数据:

    String jsonStr = "{\"MMSI\":123,\"POS\":\"1,2\"}";
    
    ObjectMapper mapper = new ObjectMapper();
    JsonNode rootNode = mapper.readTree(jsonStr);
    
    // 直接获取根节点下的 POS 字段
    String posStr = rootNode.path("POS").asText();
    System.out.println(posStr);
    
    // 将 POS 根据逗号分隔后存入 List<Integer>
    List<Integer> posList = new ArrayList<>();
    String[] posArr = posStr.split(",");
    for (String s : posArr) {
        posList.add(Integer.parseInt(s));
    }
    System.out.println(posList);
    

    这段代码的输出大致如下:

    1,2
    [1, 2]
    

    在代码中,我们首先使用 Jackson 库的 ObjectMapper 类的 readTree() 方法将 JSON 字符串解析为树形结构的 JsonNode 对象。接着,我们可以通过 rootNode.path("key") 来获取 JSON 数据中 key 字段的值,并使用 asText() 等方法获取相应类型的数据。最后,我们将相应字段的值提取出来,将它们转化为 List 类型并输出。需要注意的是,这里解析 JSON 数据中的 key 字段,需要根据实际情况进行修改。

问题点: 服务请求失败
解决办法:
请求服务时, 麻烦加上status_code的判断,看看status_code是不是200. 再进行后续json数据的获取和解析.