集团官网
  • 华为授权培训中心
  • 腾讯云一级认证培训中心
  • 百度营销大学豫陕深授权运营中心
  • Oracle甲骨文OAEP中心
  • Microsoft Azure微软云合作伙伴
  • Unity公司战略合作伙伴
  • 普华基础软件战略合作伙伴
  • 新开普(股票代码300248)旗下丹诚开普投资
  • 中国互联网百强企业锐之旗旗下锐旗资本投资

如何利用Java爬取网站数据?

编辑:云和数据 日期:2022-11-29 14:17

1.Jsoup介绍

 

– 官网文档:https://jsoup.org

– Jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。

2. Jsoup快速入门

– 获取网页标题

String url = "https://search.jd.com/Search?keyword=手机&wq=手机&page=1";Document document = Jsoup.connect(url).get();String title = document.select("title").text();System.out.println(title);```

– 运行效果:手机 – 商品搜索 – 京东

3. 网站数据分析

3.1 分析网站的访问地址

– 以京东商城为例,商品分页列表的url地址,需要带如下几个参数,因此,在发送http请求时,需要携带正确的参数。

– URL:https://search.jd.com/Search?keyword=手机&wq=手机&page=1

3.2 分析网站的页面结构

– 通过浏览器的开发者工具,可以分析出页面中我们需要的html结构。

– 可以看出,我们需要的商品数据,封装在一个id=J_goodsList的div标签中,我们可以方便的通过DOM解析出这块数据。

4. 实战实现过程

– 获取第1页的商品基本数据

public static void main(String[] args) throws Exception {    //第1页地址    String url = "https://search.jd.com/Search?keyword=手机&wq=手机&page=1";    //发送http请求    Document document = Jsoup.connect(url).get();    //在id=J_goodsList的div下,获取所有带有data-sku属性的li标签    Elements lis = document.select("div[id=J_goodsList] li[data-sku]");    lis.forEach(            li -> {                //获取商品sku                String sku = li.attr("data-sku");                //获取商品name                String name = li.select("div[class='p-name p-name-type-2'] a em").text();                //获取商品图片地址                String img = li.select("div[class=p-img] a img[data-lazy-img]").attr("data-lazy-img");                               System.out.println(String.format("%s, %s, %s", sku, name, img));            }    );}

– 效果预览

1665718155423_1.jpg

– 改造为分页获取

public static void main(String[] args) throws Exception {    //第N页地址    String url = "https://search.jd.com/Search?keyword=手机&wq=手机&page=" + i;    //发送http请求    Document document = Jsoup.connect(url).get();    //在id=J_goodsList的div下,获取所有带有data-sku属性的li标签    Elements lis = document.select("div[id=J_goodsList] li[data-sku]");    lis.forEach(            li -> {                //获取商品sku                String sku = li.attr("data-sku");                //获取商品name                String name = li.select("div[class='p-name p-name-type-2'] a em").text();                //获取商品图片地址                String img = li.select("div[class=p-img] a img[data-lazy-img]").attr("data-lazy-img");                System.out.println(String.format("%s, %s, %s", sku, name, img));            }    );}

相关内容

常见的网页ui界面布局有哪些? 在设计网页时,需要根据不同的网站性质和页面内容选择合适的布局形式,下面介绍一些常见的网页布局方式。1. “国”字型布局“国”字型布局是网页上使用最多的一种结构类型,是综合性网站页面中常用的版式。通常上方为引导栏、header, 导航栏,中间为内容区,最底端为版权信息。将内容区分为左、中、右三大... 郑州学习测试开发如何选择培训班? 随着互联网的快速发展,如今对于测试开发岗位的需求量都有明显的增长,现在选择选择学习测试开发的人也变得越来越多,不同的培训学校有着不同的优势。那么郑州学习测试开发如何选择培训班? 线上、线下了解机构口碑线上在网上查看网友对该机构的评价,需注意的是要客观看待,因为网上的往往真假参半;其次... Maven是怎么样构建Spring Boot项目的? 准备好项目运行所需的环境后,就可以使用IDEA开发工具搭建一个Spring Boot入门程序了。我们既可以使用Maven方式构建项目,也可以使用Spring Initializr快捷方式构建项目。这里先介绍如何使用Maven方式构建Spring Boot项目,具体步骤如下。1.初始化IDEA配... 郑州Java开发培训学费大约是多少? 伴随互联网行业的发展,现如今的企业对于Java开发技术人才需求较高,很多零基础的也想要从事相关的Java开发岗位,这时候需要报班系统的学习,费用的问题备受关注,那郑州Java开发培训学费大约是多少? 虽然不同的培训机构费用略有差别,但总的来说,线下培训的费用都在一万五到两万之间,线上... Beta测试和Alpha测试是什么?区别在哪儿? 大型通用软件,在正式发布前,通常需要执行 Alpha 和 Beta 测试,目的是从实际终端用户的使用角度,对软件的功能和性能进行测试,以发现可能只有最终用户才能发现的错误。Alpha 测试是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的受控测试,Alpha ... 相比APP、H5设计有哪些优点和缺点? 随着移动互联网的快速发展,传统的营销模式显然已经不再符合当下时代的需求。当下,越来越多的企业将品牌营销所需费用的大头投入到移动互联网方面。从中,我们也可以看出,移动营销已然大势所趋。那为什么用H5来执行线上的营销方案呢?要了解这一点我么首先来了解一下H5的特点。美观性:页面设计更加的美观,有声...
×