樟树市建设局网站西安哪家做网站好

web/2025/9/27 18:26:31/文章来源:
樟树市建设局网站,西安哪家做网站好,西部数码 网站管理,合肥中科大网站开发项目搭建 1、启动ES#xff0c;和head-master#xff0c;用head-master建立索引 不建立也没事#xff0c;添加数据的时候会自动创建 2、导入SpringBoot需要的依赖 注意#xff1a;elasticsearch的版本要和自己本地的版本一致#xff01;所以还要在pom里面添加自定义版本…项目搭建 1、启动ES和head-master用head-master建立索引 不建立也没事添加数据的时候会自动创建 2、导入SpringBoot需要的依赖 注意elasticsearch的版本要和自己本地的版本一致所以还要在pom里面添加自定义版本 !--解析网页需要的依赖Jsoup-- dependencygroupIdorg.jsoup/groupIdartifactIdjsoup/artifactIdversion1.10.2/version /dependency !--阿里的JSon转换依赖-- dependencygroupIdcom.alibaba/groupIdartifactIdfastjson/artifactIdversion1.2.73/version /dependency !--ES启动依赖-- dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-elasticsearch/artifactId /dependency !--thymeleaf模板依赖-- dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-thymeleaf/artifactId /dependency dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId /dependency !--lombok依赖-- dependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdoptionaltrue/optional /dependency3、项目用到的静态资源修改过的 链接https://pan.baidu.com/s/1X1kwMHsDvML-0rBEJnUOdA提取码qjqy 4、添加SpringBoot配置(application.yml) #端口改为9090 server:port: 9090# 关闭 thymeleaf 的缓存 spring:thymeleaf:cache: false5、项目的整体结构 6、添加静态资源到项目中 7、SpringBoot中添加ES客户端配置类 ElasticSearchClientConfig.java package com.wu.config;Configuration public class ElasticSearchClientConfig {Beanpublic RestHighLevelClient restHighLevelClient() {RestHighLevelClient client new RestHighLevelClient(RestClient.builder(new HttpHost(127.0.0.1, 9200, http)));return client;} }Jsoup爬取京东数据 爬取数据 1、进入京东官网搜索java 2、按F12审查元素找到书籍所在位置 3、在utils包下建立HtmlParseUtil.java爬取测试 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hz6j9by4-1610955508957)(C:\Users\王东梁\AppData\Roaming\Typora\typora-user-images\image-20210118112732209.png)] //测试数据 public static void main(String[] args) throws IOException, InterruptedException {//获取请求String url https://search.jd.com/Search?keywordjava;// 解析网页 Jsou返回的Document就是浏览器的Docuement对象Document document Jsoup.parse(new URL(url), 30000);//获取id所有在js里面使用的方法在这里都可以使用Element element document.getElementById(J_goodsList);//获取所有的li元素Elements elements element.getElementsByTag(li);//用来计数int c 0;//获取元素中的内容 这里的el就是每一个li标签for (Element el : elements) {c;//这里有一点要注意直接attr使用src是爬不出来的因为京东使用了img懒加载String img el.getElementsByTag(img).eq(0).attr(data-lazy-img);//获取商品的价格并且只获取第一个text文本内容String price el.getElementsByClass(p-price).eq(0).text();String title el.getElementsByClass(p-name).eq(0).text();String shopName el.getElementsByClass(p-shop).eq(0).text();System.out.println();System.out.println(img);System.out.println(price);System.out.println(title);System.out.println(shopName);}System.out.println(c); }测试结果 获取结果没问题下面就把它封装成一个工具类 4、建立一个pojo实体类 实体类Content.java package com.wu.pojo;Data AllArgsConstructor NoArgsConstructor public class Content {private String img;private String price;private String title;private String shopName;//可以自己扩展属性 }工具类HtmlParseUtil.java package com.wu.utils;Component public class HtmlParseUtil {public ListContent parseJD(String keyword) throws IOException {ListContent list new ArrayList();String url https://search.jd.com/Search?keyword keyword;Document document Jsoup.parse(new URL(url), 30000);Element element document.getElementById(J_goodsList);Elements elements element.getElementsByTag(li);for (Element el : elements) {String img el.getElementsByTag(img).eq(0).attr(data-lazy-img);String price el.getElementsByClass(p-price).eq(0).text();String title el.getElementsByClass(p-name).eq(0).text();String shopName el.getElementsByClass(p-shopnum).eq(0).text();list.add(new Content(img, price, title, shopName));}return list;} }[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Jpthiq6i-1610955508959)(C:\Users\王东梁\AppData\Roaming\Typora\typora-user-images\image-20210118115802010.png)] 5、业务层这里就不写接口了 ContentService.java 先写一个方法让爬取的数据添加到ES中 package com.wu.service;//业务编写 Service public class ContentService {//将客户端注入AutowiredQualifier(restHighLevelClient)private RestHighLevelClient client;//1、解析数据放到 es 中public boolean parseContent(String keyword) throws IOException {ListContent contents new HtmlParseUtil().parseJD(keyword);//把查询的数据放入 es 中BulkRequest request new BulkRequest();request.timeout(2m);for (int i 0; i contents.size(); i) {request.add(new IndexRequest(jd_goods).source(JSON.toJSONString(contents.get(i)), XContentType.JSON));}BulkResponse bulk client.bulk(request, RequestOptions.DEFAULT);return !bulk.hasFailures();} }6、在Controller包下建立 ContentController.java package com.wu.controller;//请求编写 RestController public class ContentController {Autowiredprivate ContentService contentService;GetMapping(/parse/{keyword})public Boolean parse(PathVariable(keyword) String keyword) throws IOException {return contentService.parseContent(keyword);} }7、启动SpringBoot项目访问它爬取数据添加到ES中 http://127.0.0.1:9090/parse/java 实现搜索功能 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xZLCRWps-1610955508961)(C:\Users\王东梁\AppData\Roaming\Typora\typora-user-images\image-20210118131856663.png)] 1、在ContentService.java添加 //2、获取这些数据实现基本的搜索功能 public ListMapString, Object searchPage(String keyword, int pageNo, int pageSize) throws IOException {if (pageNo 1) {pageNo 1;}if (pageSize 1) {pageSize 1;}//条件搜索SearchRequest searchRequest new SearchRequest(jd_goods);SearchSourceBuilder sourceBuilder new SearchSourceBuilder();//分页sourceBuilder.from(pageNo).size(pageSize);//精准匹配TermQueryBuilder termQuery QueryBuilders.termQuery(title, keyword);sourceBuilder.query(termQuery);sourceBuilder.timeout(new TimeValue(60, TimeUnit.SECONDS));//执行搜索SearchRequest source searchRequest.source(sourceBuilder);SearchResponse searchResponse client.search(searchRequest, RequestOptions.DEFAULT);//解析结果ListMapString, Object list new ArrayList();for (SearchHit documentFields : searchResponse.getHits().getHits()) {list.add(documentFields.getSourceAsMap());}return list; }2、在ContentController添加搜索请求 GetMapping(/search/{keyword}/{pageNo}/{pageSize}) public ListMapString, Object search(PathVariable(keyword) String keyword,PathVariable(pageNo) int pageNo,PathVariable(pageSize) int pageSize) throws IOException {ListMapString, Object list contentService.searchPage(keyword, pageNo, pageSize);return list; }3、访问http://127.0.0.1:9090/search/java/1/10 欧克爬取和搜索都没问题下面要做的就是和前端交互了 和前端交互 1、前端接收数据 index.html 1、用vue接收数据 scriptnew Vue({el: #app,data: {keyword: , //搜索的关键字results: [] //搜索的结果},methods: {searchKey() {var keyword this.keywordaxios.get(search/ keyword /1/210).then(response {this.results response.data;//绑定数据})}}}) /script2、用vue给前端传递数据 2、访问 127.0.0.1:9090 并且搜索java 欧克完美 实现关键字高亮 1、改ContentService.java里面的搜索功能就行 //3、获取这些数据实现基本的搜索高亮功能 public ListMapString, Object searchPagehighlighter(String keyword, int pageNo, int pageSize) throws IOException {if (pageNo 1) {pageNo 1;}if (pageSize 1) {pageSize 1;}//条件搜索SearchRequest searchRequest new SearchRequest(jd_goods);SearchSourceBuilder sourceBuilder new SearchSourceBuilder();//分页sourceBuilder.from(pageNo).size(pageSize);//精准匹配TermQueryBuilder termQuery QueryBuilders.termQuery(title, keyword);// 高 亮 HighlightBuilder highlightBuilder new HighlightBuilder(); //获取高亮构造器highlightBuilder.field(title); //需要高亮的字段highlightBuilder.requireFieldMatch(false);//不需要多个字段高亮highlightBuilder.preTags(span stylecolor:red); //前缀highlightBuilder.postTags(/span); //后缀sourceBuilder.highlighter(highlightBuilder); //把高亮构造器放入sourceBuilder中sourceBuilder.query(termQuery);sourceBuilder.timeout(new TimeValue(60, TimeUnit.SECONDS));//执行搜索SearchRequest source searchRequest.source(sourceBuilder);SearchResponse searchResponse client.search(searchRequest, RequestOptions.DEFAULT);//解析结果ListMapString, Object list new ArrayList();for (SearchHit hit : searchResponse.getHits().getHits()) {MapString, HighlightField highlightFields hit.getHighlightFields();//获取高亮字段HighlightField title highlightFields.get(title); //得到我们需要高亮的字段MapString, Object sourceAsMap hit.getSourceAsMap();//原来的返回的结果//解析高亮的字段if (title ! null) {Text[] fragments title.fragments();String new_title ;for (Text text : fragments) {new_title text;}sourceAsMap.put(title, new_title); //高亮字段替换掉原来的内容即可}list.add(sourceAsMap);}return list; }2、改变Controller里面的搜索请求 GetMapping(/search/{keyword}/{pageNo}/{pageSize}) public ListMapString, Object search(PathVariable(keyword) String keyword,PathVariable(pageNo) int pageNo,PathVariable(pageSize) int pageSize) throws IOException {ListMapString, Object list contentService.searchPagehighlighter(keyword, pageNo, pageSize);return list; }3、发现问题 需要高亮的字段前缀和后缀都有了但是这不是我们想要的结果 4、解决问题 这里Vue给了我们很方便的解决办法 5、完美

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/81025.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

怎么通过数据库做网站的登录校园网站建设意见表填写

昨天在家看电视时,退出的时候发现了一个弹窗效果,整个背景模糊,觉得这样的效果好炫,要比纯色加透明度高大上好多,连续试了几个界面,最终确定效果由css实现的,于是今天一大早来到公司便赶紧搜索了…

企维多类似网站网上购物平台哪个好

npm install -g cnpm --registryhttps://registry.npm.taobao.org cnpm install node-sass cnpm install 启动 cnpm run dev

网站建设落后发言无锡百度快速排名

本人没有很好的文采,只能直接配置,有不懂的地方,后面可以联系我,在配置当中,我会尽量在配置命令后面加标注。1、在R1上配置相关的命令R1(config)#int fa0/0 ---进入以太网fa0/0接口--R1&#…

快手做任务网站苏州网站推广哪家好

前缀和 一.一维前缀和(模板):1.思路一:暴力解法2.思路二:前缀和思路 二. 二维前缀和(模板):1.思路一:构造前缀和数组 三.寻找数组的中心下标:1.思路一:前缀和 四.除自身以外数组的乘积&#xff…

网站访客qq统计 原理各类网站导航

本文收集了十大热门编程语言背后的程序员和设计者的名字和大家分享。以下是十大热门编程语言及其创建者,排名不分先后。 软件领域有许多编程语言,每年还涌现出越来越的新语言。新发布的语言有Scala、Kotlin、Go和Closure,但历史证明&#xff…

网站服务器空间价格网站建设350元

第一步: 安装 VirtualBox 增强工具 点击确定,稍等片刻,VirtualBox 的增强功能就可以安装完毕。 第2步:设置要共享给Linux 虚拟机的文件夹(目录) 点击右下角的“分配数据空间” 点击“添加” 选择要共享的路…

南昌本地生活网站有哪些手机端网站优化排名seo推广

1.场景介绍: ​ 开发过程中我们经常性的会用到许多的中间表,用于数据之间的对应和关联.这个时候我们关联最多的就是ID,我们在一张表中插入数据后级联增加到关联表中.我们熟知的mybatis在插入数据后返回的是插入成功的条数,那么这个时候我们想要得到相应的这条新增数据的ID,该怎…

手机网页及网站设计 pdfwordpress主题谁的最好

问题&#xff1a;通常我会这么定义列表&#xff1a;List<String> names new ArrayList<>()names类型使用List接口&#xff0c;那么具体实现该如何选择。 什么时候应该用LinkedList替代ArrayList&#xff0c;反之亦然&#xff1f;这里大家可以关注一下我的个人专栏…

网站建设设计制作包头关键词排名优化网站建设公司

分布式调度框架 服务端 1、根据执行器创建任务&#xff0c; 2、底层通过netty发起调度。 客户端 1、注册到服务端成为执行器 2、注册任务类&#xff0c;任务类需要实现JobHandler这个接口的类 2、接受调度请求&#xff0c;找到对应的bean&#xff0c;并把bean放到线程池&…

调试网站解析域名影响wordpress启用收费下载无效

命令模式&#xff1a;将一个请求封装为一个对象&#xff0c;从而使你可用不同的请求对客户进行参数化&#xff1b;对请求排队或记录请求日志&#xff0c;以及支持可撤销的操作。 命令模式的好处&#xff1a; 1、它能较容易地设计一个命令队列&#xff1b; 2、在需要的情况下&a…

宁德商城网站开发设计远程数据库 wordpress

来源&#xff1a;http://www.noahweb.net/mail/2/Project.htm#biao B/S系统中的权限比C/S中的更显的重要&#xff0c;C/S系统因为具有特殊的客户端&#xff0c;所以访问用户的权限检测可以通过客户端实现或通过客户端服务器检测实现&#xff0c;而B/S中&#xff0c;浏览器是每一…

什么网站做电子元器件简洁的网页模板

JSON.parse和JSON.stringify这两个浏览器自带&#xff08;IE6/7除外&#xff09;的方法平常我们经常用到&#xff0c;但是一般都只是用到了他们的第一个参数&#xff0c;比如字符串转对象&#xff1a;JSON.parse({}) 对象转字符串&#xff1a;JSON.stringify({}) 今天特意看了…

哈尔滨门户网站建设网络营销的特点包含()。

文章首发于我的个人博客&#xff1a;欢迎大佬们来逛逛 文章目录 处理带返回值的函数asyncpackaged_taskpromise 处理带返回值的函数 有三种方法&#xff1a; asyncpackaged_taskpromise async 第一种方法是使用 async 函数。 步骤&#xff1a; 使用 async 创建线程处理函…

横沥镇网站建设晓风彩票网站建设源代码授权

一、安装 双击安装文件&#xff0c;然后安装指引点击下一步 ​​ 选择【Custom】安装类型 ​​ 将程序安装到D盘MongoDB目录下&#xff08;如果切换了目录&#xff0c;记得对应调整monggo.bat下面的路径&#xff09; ​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​…

企业网站优化三层含义网站平台建设目标

元类就是类的类&#xff0c;type就是Python中创建所有类的元类。type就是创建类对象的类。Python中所有的东西——都是对象。这包括整数、字符串、函数以及类。它们全部都是对象&#xff0c;并且它们都是从一个类创建来&#xff0c;这个类就是type。# class Foo(object):# …

网站是先备案还是先做网站wordpress推荐主题

判断文件夹是否存在时&#xff0c;可以使用Directory类的Exists()方法或者DirectoryInfo类的Exists属性来实现。 一、判断文件夹是否存在 1.Directory类的Exists()方法 Exists()方法用于确定给定路径是否引用磁盘上的现有目录&#xff0c;语法如下。 public static bool Ex…

手机网站页面设计要求网站推广有什么方法

判断任意输入年份是闰年还是普通闰年还是平年 判断输入年份是否为世纪闰年&#xff08;能被100整除但不能被400整除&#xff09;或普通闰年&#xff08;能被4整除但不能被100整除&#xff0c;或者能被400整除&#xff09;。用户输入一个年份后&#xff0c;程序会判断该年份是世…

国内精美网站欣赏福田做网站需要多少钱

EasyRecovery数据恢复软件是一款专业且功能强大的数据恢复工具&#xff0c;它旨在帮助用户从各种存储设备中恢复由于各种原因&#xff08;如误删除、格式化、病毒攻击、系统崩溃等&#xff09;导致丢失的数据。这款软件支持多种存储介质&#xff0c;包括但不限于硬盘驱动器、U盘…

哪个网站做轴承外贸的人比较多品牌建设经费投入占销售比重

用360浏览器访问星瞳科技官网&#xff0c;一直提示访问不了。后面换了IE浏览器就可以访问。第一个坑。

如何建单页网站网络工程师考试大纲

理论基础 刷题大纲&#xff1a; 动态规划5步曲&#xff1a; 1、确定dp数组以及下标的含义 2、确定递推公式 3、dp数组如何初始化 4、确定遍历顺序 5、举例推导dp数组 509. 斐波那契数 509. 斐波那契数 - 力扣&#xff08;LeetCode&#xff09; 代码随想录 (programmercarl.co…