hutool-http实现离线爬虫

news/2025/1/16 10:00:11/
http://www.w3.org/2000/svg" style="display: none;">

文章目录

      • 1.数据爬取流程
      • 2.离线爬虫(Hutool-http实现)
        • 1.获取数据
        • 2.数据清洗
        • 3.为什么有各种类型的强转
        • 4.数据入库
      • 3.测试完整代码

1.数据爬取流程

1.分析数据源(怎么获取)

2.拿到数据后怎么处理

3.写入数据库存储

http_8">2.离线爬虫(Hutool-http实现)

1.获取数据

这里返回的是json格式的字符串
https://i-blog.csdnimg.cn/img_convert/4d3008f8fbfad4d62d761401b8a7522a.png" alt="" />
https://i-blog.csdnimg.cn/img_convert/593247f38c98e4665824f3b4cad5e1b3.png" alt="" />

2.数据清洗

通过该工具类将json数据转换成map对象
https://i-blog.csdnimg.cn/img_convert/1486492611f1c54b2147b70fe954d820.png" alt="" />
有一些数据还是数组,通过toList装成List集合后就可以通过该方法转成 Json字符串
https://i-blog.csdnimg.cn/img_convert/19434ae667a703189a12828cac6923e3.png" alt="" />
https://i-blog.csdnimg.cn/img_convert/26ab025bcd30690451c0f60569b57db7.png" alt="" />

3.为什么有各种类型的强转

https://i-blog.csdnimg.cn/img_convert/e89d61bcd6640e919a7458b8e755dacf.png" alt="" />

从调试的结果可以看出,虽然转换成了map集合,但各自原有的类型依然存在,我们强转之后就能调用该类型的方法

4.数据入库

https://i-blog.csdnimg.cn/img_convert/7c41f72d1117cc9778a313ad50a6cdf1.png" alt="" />
我们使用mybatis-plus的批量插入

3.测试完整代码

    @Autowiredprivate PostService postService;/*** 离线爬取数据入库*/@Testvoid getLiXian() {/*** 1.获取数据*///请求的地址String url = "别人的接口";//请求的参数String json = "别人的json格式参数";String result = HttpRequest.post(url).body(json).execute().body();/*** 2.数据清洗:json转对象*/Map<String,Object> map = JSONUtil.toBean(result, Map.class);JSONObject data = (JSONObject) map.get("data");JSONArray records = (JSONArray)data.get("records");List<Post> postList = new ArrayList<>();for (Object record : records) {JSONObject recordNew = (JSONObject) record;Post post = new Post();JSONArray tags = (JSONArray) recordNew.get("tags");List<String> list = tags.toList(String.class);post.setTags(JSONUtil.toJsonStr(list));post.setContent(recordNew.getStr("content"));post.setThumbNum(0);post.setFavourNum(0);post.setUserId(0L);post.setCreateTime(new Date());post.setUpdateTime(new Date());postList.add(post);}/*** 3.离线爬取数据存储到数据库*/postService.saveBatch(postList);}

http://www.ppmy.cn/news/1563563.html

相关文章

掌握 React 关键:理解 super () 和 super (props) 的不同应用

在 React 中&#xff0c;super() 和 super(props) 都与 React 类组件的构造函数&#xff08;constructor&#xff09;以及继承有关。为了理解它们之间的区别&#xff0c;我们需要了解 JavaScript 类继承机制以及 React 类组件的工作原理。 1. super() 与 super(props) 的区别 …

设置virtualBox7.0.12 ubuntu24.10 和 windows之间双向复制共享剪贴板

虚拟机配置如下&#xff1a; 在Ubuntu终端输入以下指令&#xff1a;(如果虚拟机重启之后剪贴板不共用了&#xff0c;再次执行第二条指令启动服务就可以解决&#xff0c;Ubuntu终端中复制有时需要使用右键->复制才会到剪贴板上) sudo apt install virtualbox-guest-x11 sudo…

iOS - 内存对齐

1. 基本的内存对齐 // 对象内存对齐 struct objc_object {// isa 指针 8 字节对齐isa_t isa __attribute__((aligned(8))); };// 定义对齐常量 #define WORD_MASK 7UL // 字对齐掩码 #define WORD_SHIFT 3UL // 字对齐位移 #define WORD_SIZE 8 …

机器学习在服务监控中的创新应用:提升运维效率与可靠性

《机器学习在服务监控中的创新应用:提升运维效率与可靠性》 一、引言 在当今复杂的信息技术环境中,服务监控对于确保系统的稳定运行至关重要。传统的服务监控方法往往依赖于预定义的阈值和规则,但在面对复杂多变的服务行为时,这些方法可能会显得力不从心。机器学习的出现…

HarmonyOS NEXT应用开发边学边玩系列:从零实现一影视APP (四、最近上映电影滚动展示及加载更多的实现)

在HarmonyOS NEXT开发环境中&#xff0c;可以使用多种组件和库来构建丰富且交互友好的应用。本文将展示如何使用HarmonyOS NEXT框架和nutpi/axios库&#xff0c;从零开始实现一个简单的影视APP的首页&#xff0c;主要关注最近上映电影的滚动展示及加载更多功能的实现。 开源项目…

CSS的小知识

一、子选择器 (>) 让 CSS 样式只作用于子级和孙级元素&#xff0c;而不影响其他元素 有>是只对其子级有效&#xff0c;子选择器只会影响直接的子级元素&#xff0c;而不会影响更深层次的孙级元素 无>时是对子级、孙级、曾孙级等所有后代都有效

我在2025年自学网络安全(黑客)

当我们谈论网络安全时&#xff0c;我们正在讨论的是保护我们的在线空间&#xff0c;这是我们所有人的共享责任。网络安全涉及保护我们的信息&#xff0c;防止被未经授权的人访问、披露、破坏或修改。 一、网络安全的基本概念 网络安全是一种保护&#xff1a;它涉及保护我们的…

栈算法篇——LIFO后进先出,数据与思想的层叠乐章(上)

文章目录 前言第一章&#xff1a;栈的基础知识回顾1.1 栈的结构与实现1.2 栈的应用第二章&#xff1a;删除字符串中的所有相邻重复项2.1 题目链接&#xff1a;https://leetcode.cn/problems/remove-all-adjacent-duplicates-in-string/description/2.2 题目分析&#xff1a;2.3…