文章目录
1.数据爬取流程
1.分析数据源(怎么获取)
2.拿到数据后怎么处理
3.写入数据库存储
2.离线爬虫(Hutool-http实现)
1.获取数据
这里返回的是json格式的字符串
2.数据清洗
通过该工具类将json数据转换成map对象
有一些数据还是数组,通过toList装成List集合后就可以通过该方法转成 Json字符串
3.为什么有各种类型的强转
从调试的结果可以看出,虽然转换成了map集合,但各自原有的类型依然存在,我们强转之后就能调用该类型的方法
4.数据入库
我们使用mybatis-plus的批量插入
3.测试完整代码
plain
@Autowired
private PostService postService;
/**
* 离线爬取数据入库
*/
@Test
void 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);
}