首页 > 其他分享 >Elasticsearch掰开揉碎第21篇京东商场之爬取数据

Elasticsearch掰开揉碎第21篇京东商场之爬取数据

时间:2023-05-28 15:32:10浏览次数:49  
标签:java 21 图片 Elasticsearch 揉碎 京东 解析 工具 页面

引言

上一篇主要讲解的是:京东商场之前期准备(引入pom依赖、删除环境中无用的文件、修改资源配置文件、拷贝前端素材、创建测试controller、启动springboot项目、访问测试)

本篇主要讲解的是:京东商场之爬取数据(京东商场搜索请求、HTML解析器之jsoup、编写html解析工具类、解析页面所有的商品信息、图片的延迟加载、创建pojo类、提取解析工具类为方法、测试解析工具类封装的方法、页面元素获取扩展讲解)

打开京东搜索一下

Elasticsearch掰开揉碎第21篇京东商场之爬取数据_java

输入  java 并搜索

Elasticsearch掰开揉碎第21篇京东商场之爬取数据_maven_02

注意下图中,真正的请求部分

Elasticsearch掰开揉碎第21篇京东商场之爬取数据_Elasticsearch_03

你输入java,它就会发起一个搜索java的请求,它会给你响应一个html页面,页面中就会展示对应的信息。所以,通过获取请求返回的页面信息,筛选出我们想要的数据就可以了。通过jsoup技术,就可以解析页面。

注意看网址部分:https://search.jd.com/Search?keyword=java&enc=utf-8&wq=java&pvid=8238ca07b2fd4664b63d9bd491cad26d

这里面真正的请求部分是:https://search.jd.com/Search?keyword=java

我把测试一下,把真正的请求部分直接粘到网页上,看看效果一样的

Elasticsearch掰开揉碎第21篇京东商场之爬取数据_SpringBoot_04

导入jsoup包的依赖

Elasticsearch掰开揉碎第21篇京东商场之爬取数据_idea_05

通过开发工具查看页面的元素

在当前京东页面上,按F12键打开 开发者工具

Elasticsearch掰开揉碎第21篇京东商场之爬取数据_Elasticsearch_06

在页面上点击,查看页面上的元素标签

Elasticsearch掰开揉碎第21篇京东商场之爬取数据_maven_07

Elasticsearch掰开揉碎第21篇京东商场之爬取数据_Elasticsearch_08

找出的div标签,它的id=J_goodsList

编写html解析工具类

Elasticsearch掰开揉碎第21篇京东商场之爬取数据_SpringBoot_09

Elasticsearch掰开揉碎第21篇京东商场之爬取数据_maven_10

Elasticsearch掰开揉碎第21篇京东商场之爬取数据_maven_11

运行当前代码

Elasticsearch掰开揉碎第21篇京东商场之爬取数据_SpringBoot_12

从运行结果中可以看到:不同的内容,有不同的class样式。我用红框标识了

解析页面所有的商品信息

还是使用开发者工具继续操作

Elasticsearch掰开揉碎第21篇京东商场之爬取数据_maven_13

展开每一个li标签,它里面又有很多子元素

Elasticsearch掰开揉碎第21篇京东商场之爬取数据_Elasticsearch_14

继续完善html解析工具类

Elasticsearch掰开揉碎第21篇京东商场之爬取数据_idea_15

运行当前代码

Elasticsearch掰开揉碎第21篇京东商场之爬取数据_java_16

从结果中可以看出来,图片的地址没有取到,但是钱和标题取到了。

图片的延迟加载

京东网页上最开始加载的,并不是书籍真正的图片,默认加载的是统一的图片,这张图片特别小,加载速度快。你一直按F5刷新当前页面,就可以看到了。

Elasticsearch掰开揉碎第21篇京东商场之爬取数据_java_17

等网页全加载完成了,再把书籍真正的图片,加载过来。

Elasticsearch掰开揉碎第21篇京东商场之爬取数据_Elasticsearch_18

通过开发工具,重新获取图片的信息

Elasticsearch掰开揉碎第21篇京东商场之爬取数据_idea_19

继续完善html解析工具类

Elasticsearch掰开揉碎第21篇京东商场之爬取数据_idea_20

运行当前代码

Elasticsearch掰开揉碎第21篇京东商场之爬取数据_SpringBoot_21

这次我们把图片的信息也获取到了

创建pojo类

保存商品数据中的:标题、图片地址、价格信息

Elasticsearch掰开揉碎第21篇京东商场之爬取数据_SpringBoot_22

Elasticsearch掰开揉碎第21篇京东商场之爬取数据_Elasticsearch_23

Elasticsearch掰开揉碎第21篇京东商场之爬取数据_maven_24

提取解析工具类为方法

Elasticsearch掰开揉碎第21篇京东商场之爬取数据_idea_25

测试解析工具类封装的方法

Elasticsearch掰开揉碎第21篇京东商场之爬取数据_java_26

运行当前代码

Elasticsearch掰开揉碎第21篇京东商场之爬取数据_idea_27

页面元素获取扩展讲解

爬取数据那一块,如果页面多了个li标签,导致有些数据是空的,要在for循环里加个判断 。

打开京东,搜索java关键字,然后按F12,打开 开发者工具

Elasticsearch掰开揉碎第21篇京东商场之爬取数据_idea_28

比如:我要取到的el元素对应的class样式是gl-item的数据

for (Element el:elements){

   if (el.attr(class).equalsIgnoreCase(gl-item))         {

       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();

       System.out.println(img);

       System.out.println(price);

       System.out.println(title);

   }

}

结束语

至此,Elasticsearch掰开揉碎系列的第21篇就结束了,本篇主要讲解的是:京东商场之爬取数据(京东商场搜索请求、HTML解析器之jsoup、编写html解析工具类、解析页面所有的商品信息、图片的延迟加载、创建pojo类、提取解析工具类为方法、测试解析工具类封装的方法、页面元素获取扩展讲解)

由于页面显示图片大小有限,代码一多图片显示得就偏小。还有一些兄弟们,java的基础又不好,照着我的图片打代码,可能因为手误都会出错。为了不让任何一个兄弟夭折在学习的路上,有需要本篇文章中java源代码的,就给我留言点赞吧,Elasticsearch系列也写么这多篇了,算是对我的鼓励和支持吧!留下你的邮箱,我把源代码发给你!

下一篇我给大家带来的是:京东商场之业务编写。我们依然掰开揉碎的方式去说。后续的内容更精彩,敬请期待,感谢兄弟们的关注!!!


标签:java,21,图片,Elasticsearch,揉碎,京东,解析,工具,页面
From: https://blog.51cto.com/51power/6365142

相关文章

  • Elasticsearch掰开揉碎第24篇京东商场之关键字高亮
    引言上一篇主要讲解的是:京东商场之前后端交互(修改index.html文件、编译项目、重新启动程序、index.html继续完善js代码、index.html遍历商品详细信息、访问测试)本篇主要讲解的是:京东商场之关键字高亮(编写service层代码、修改controller层代码、修改index.html文件、重新启动程序......
  • Elasticsearch掰开揉碎第13篇SpringData操作ES基础篇
    引言上一篇主要讲解的是:使用java操作Elasticsearchapi完成常用操作,比如:添加文档、查询文档数据、更新文档数据、删除文档数据、批量添加、批量更新、批量删除、查询指定索引中所有数据、匹配查询\分页查询\排序,匹配查询\高亮显示。本篇主要讲解的是:SpringData简介、一个完整的开发......
  • Elasticsearch掰开揉碎第17篇SpringBoot集成Elasticsearch之索引操作
    引言上一篇主要讲解的是:高亮显示、自定义高亮显示、通过html展示高亮效果。本篇主要讲解的是:创建SpringBoot项目、SpringBoot项目的配置修改、创建配置类、索引的API操作。创建spring项目双击IntelliJIDEA工具创建配置类编辑测试类1、创建索引运行测试类运行结果查看现有的索引可......
  • Elasticsearch掰开揉碎第18篇SpringBoot集成Elasticsearch之文档操作
    引言上一篇主要讲解的是:创建SpringBoot项目、SpringBoot项目的配置修改、创建配置类、索引的API操作本篇主要讲解的是:文档的API操作(创建pojo、导入fastjosn依赖、添加文档、获取文档、获取文档信息、更新文档信息、删除文档信息、批量插入数据、高级查询)本篇文中所有操作,接着在上......
  • Elasticsearch掰开揉碎第4篇倒排索引
    引言上一篇主要讲解的是在windows环境下:Elasticsearch的单机、Elasticsearch的伪集群。本篇主要讲解的是:传统数据库的索引、Elasticsearch的倒排索引、Elasticsearch与关系型数据库对比。传统数据库的索引索引简介索引是数据库中,表级管理必须要配置的。如果不做索引,表级扫描是全表......
  • Elasticsearch掰开揉碎第10篇maven项目
    引言上一篇主要讲解Java基础环境搭建:jdk和maven的安装\配置、eclipse和jdk\maven集成、idea和jdk\maven集成本篇主要讲解的是:使用eclipse创建普通java项目\maven项目,使用idea创建普通java项目\maven项目。普通java项目简介1、什么是javaJava可以编写桌面应用程序、Web应用程序、分......
  • Elasticsearch掰开揉碎第11篇java操作ES前期准备
    引言上一篇主要讲解的是:使用eclipse创建普通java项目\maven项目,使用idea创建普通java项目\maven项目。本篇主要讲解的是:使用java操作Elasticsearch的前期准备(创建索引库、设置mapping、插入数据、验证数据、创建maven项目)前期准备之数据1、创建索引库curl-XPUT'http://192.168......
  • [P7738][NOI2021] 量子通信
    [NOI2021]量子通信题目背景由于评测性能差异,本题时限+0.5s。题目描述小Z正在自学量子计算机相关知识,最近他在研究量子通信章节,并遇到了一个有趣的问题。在该问题中,Alice和Bob正在进行量子通信,它们的通信语言是一个大小为\(n\)的字典\(S\),在该字典中,每一个单词\(s_i......
  • 2023.21 linux下的文件打包tar
    “tar”是“tapearchive”的缩写,最初是为了在磁带上创建档案而设计的,Linux下常使用tar命令将多个文件或目录打包成一个文件,这样可以方便地将多个文件或目录打包成一个文件,以便于备份或传输。刚从Windows使用Linux的很多可能都没意识到打包和压缩两个不同的概念,打包就是将多......
  • 时代的眼泪:CF1562A The Miracle and the Sleeper 题解 2021-09-23 23:00:33
    CF1562ATheMiracleandtheSleeper题解笑死,晚上熬夜打CF比赛只过了A题还加了CF值!?由于本人太弱,这道橙题都干了1h题目描述有\(T\)组数据,给出一个区间\([l,r]\),在这个区间中选择2个数a,b,使它们a%b的值最大.注意:\(l\ler\le10^9\),\(T\le10^3\)解题步骤暴力......