「这是我参与11月更文挑战的第25天,活动详情查看:2021最后一次更文挑战」
技术栈:
SpringBoot 2.5.6
ElasticSearch 7.8.0
Vue
1、项目搭建
1、新建一个Spring Boot 项目
2、导入依赖
 2.1、 修改Springboot中的ElasticSearch版本和本地的版本一致
1  | java复制代码<properties>  | 
 2.2、导入依赖
1  | xml复制代码<dependencies>  | 
3、编写配置文件
1  | properties复制代码# 更改端口,防止冲突  | 
4、导入静态资源
链接:pan.baidu.com/s/10EF40UUK…
提取码:ot8j
5、测试访问静态页面
1  | java复制代码@GetMapping({"/","/index"})  | 
项目搭建完成!
2、爬取数据
1、通过请求 search.jd.com/Search?keyw… 查询到页面
检查网页:可以看到元素列表id为 J_goodsList,
每个li标签里面存放了每个商品的具体数据:
2、解析页面,获取数据
编写解析页面工具类,获取商品信息:简易版
1  | java复制代码package com.cheng.utils;  | 
运行:数据获取成功。
编写商品信息的实体类:
1  | java复制代码@Data  | 
将解析页面工具类 HTMLParseUtil 封装成方法:完整版
1  | java复制代码package com.cheng.utils;  | 
运行测试工具类:
爬取数据测试成功!
3、编写业务
1、编写配置文件
1  | java复制代码@Configuration  | 
2、编写service层
1  | java复制代码package com.cheng.service;  | 
3、编写controller层
1  | java复制代码package com.cheng.controller;  | 
4、进行测试
访问请求:http://localhost:9090/parse/java 添加文档:文档数据已添加进ES中
访问请求:http://localhost:9090/search/java/1/20 查询带有关键字“java”的商品信息,并进行分页:查询成功!
4、前后端交互
1、导入vue和axios依赖
2、引入js到html文件中
1  | html复制代码<script th:src="@{/js/vue.min.js}"></script>  | 
3、渲染后的 index.html
1  | html复制代码<!DOCTYPE html>  | 
5、关键字高亮
在ContentService里面加上关键字高亮的方法:
原理:用新的高亮字段值覆盖旧的字段值
1  | java复制代码public List<Map<String, Object>> highlightSearch(String keyword, Integer pageIndex, Integer pageSize) throws IOException {  | 
在index.html中配置高亮效果:
1  | html复制代码<!--标题-->  | 
6、最终效果
本文转载自: 掘金