「这是我参与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、最终效果
本文转载自: 掘金