Elasticsearch掰开揉碎第21篇京东商场之爬取数据
  Lb78AVwchy8f 2023年11月02日 90 0

引言

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

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

打开京东搜索一下

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

输入  java 并搜索

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

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

Elasticsearch掰开揉碎第21篇京东商场之爬取数据_SpringBoot_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篇京东商场之爬取数据_maven_04

导入jsoup包的依赖

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

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

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

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

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

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

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

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

编写html解析工具类

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

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

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

运行当前代码

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

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

解析页面所有的商品信息

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

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

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

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

继续完善html解析工具类

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

运行当前代码

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

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

图片的延迟加载

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

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

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

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

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

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

继续完善html解析工具类

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

运行当前代码

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

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

创建pojo类

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

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

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

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

提取解析工具类为方法

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

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

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

运行当前代码

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

页面元素获取扩展讲解

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

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

Elasticsearch掰开揉碎第21篇京东商场之爬取数据_Elasticsearch_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系列也写么这多篇了,算是对我的鼓励和支持吧!留下你的邮箱,我把源代码发给你!

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


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  3I1N9ysrcSyk   2023年12月08日   31   0   0 javahapi数据交换
  DF5J4hb0hcmT   2023年12月07日   50   0   0 javaArthas
  DF5J4hb0hcmT   2023年12月06日   38   0   0 IDEATomcat
Lb78AVwchy8f