Java爬虫Jsoup篇

导航

  • Java爬虫Jsoup篇
    • 一、Jsoup概述
    • 二、Jsoup使用
    • 三、为什么老是被和谐,老子爬个公开的信息怎么了
      • 完整代码:

一、Jsoup概述

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

关键信息:jsoup可以解析html文档

那么,解析html文档和爬虫有什么关系呢?

网页要在浏览器显示,离不开html,要是我们能够解析它的html,那么我们就能获取其中的数据。

二、Jsoup使用

使用jsoup不需要繁琐的配置,直接导包就可以开始干。

<dependency><groupId>org.jsoup</groupId><artifactId>jsoup</artifactId><version>1.13.1</version>
</dependency>

Joup中有很多类和方法,但实际上常用的就几个,我们来敲个代码试试。

package vip.yangsf;import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;import java.io.IOException;public class ForBaidu {public static void main(String[] args) throws IOException {Document document = Jsoup.connect("https://www.baidu.com").get();System.out.println(document.getElementsByTag("title"));}
}

然后我们就获得了这个标签,操作和js一毛一样。

三、为什么老是被和谐,老子爬个公开的信息怎么了

我们来做一个爬取商品信息的案例:

  1. 访问它的网址(哎不敢说名字啊被和谐三次了),搜索Java

    会发现地址栏是这样的:

    https://search.jd.com/Search?keyword=java&enc=utf-8&wq=java&pvid=f9e0a8114fdc4692bc75096d4fff6a75

    简单读一读,发现是一个get请求,“ ? ” 后面是参数,那么精简一下:

    https://search.jd.com/Search?keyword=java&enc=utf-8

  2. 得到了url,我们就可以解析它的html,先获得dom:

    Document document = Jsoup.connect("https://search.jd.com/Search?keyword=java&enc=utf-8").get();
    
  3. 按f12观察网页,检查一下商品名在哪个标签里面

    观察发现,在一个id为J_goodsList的div下面的一个类名为p-namediv下,然后我们还可以看出,每一个商品就是一个li。

    于是:

    Elements elements = document.getElementById("J_goodsList").getElementsByTag("li");
    

    获取J_goodsList下的所有li。

  4. 遍历每一个li,获取里面的数据,并输出(例如获取商品名)

    for (Element e : elements) {System.out.println(e.getElementsByClass("p-name").get(0).getElementsByTag("em").text());
    }
    

    同样,我们可以通过同样的方法获取它的价格以及图片地址。

完整代码:

商品类:

package vip.yangsf.pojo;public class Goods {private String img;private String name;private String price;public Goods() {}public Goods(String img, String name, String price) {this.img = img;this.name = name;this.price = price;}public String getImg() {return img;}public void setImg(String img) {this.img = img;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPrice() {return price;}public void setPrice(String price) {this.price = price;}@Overridepublic String toString() {return "Goods{" +"img='" + img + '\'' +", name='" + name + '\'' +", price='" + price + '\'' +'}';}
}

爬取商品信息:

package vip.yangsf;import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import vip.yangsf.pojo.Goods;import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;public class JsoupTest {public static void main(String[] args) throws IOException {// 查询java第二页的商品信息Collection<Goods> goods = paseJD("java", 2);// 输出每一个商品的信息goods.forEach(System.out::println);}// 我们可以让搜索的关键字和页数传进来,更灵活public static Collection<Goods> paseJD(String keyword, int page) throws IOException {// 待会儿每爬到一个商品就把它加进来Collection<Goods> goods = new ArrayList<>();// 把url拼接出来String url = "https://search.jd.com/Search?keyword=" + keyword + "&enc=utf-8&page=" + page;// 拿到DOM就可以开始操作Document document = Jsoup.connect(url).get();String img = null;String name = null;String price = null;Elements elements = document.getElementById("J_goodsList").getElementsByTag("li");for (Element e : elements) {// 这里商品图片是懒加载,直接获取src获取不到img = e.getElementsByTag("img").attr("data-lazy-img");name = e.getElementsByClass("p-name").get(0).getElementsByTag("em").text();price = e.getElementsByClass("p-price").text();goods.add(new Goods(img, name, price));}return goods;}
}

Java爬虫Jsoup篇相关推荐

  1. Java爬虫入门篇---Jsoup工具

    Java爬虫入门篇---Jsoup工具 前言 准备工作 获取文本数据 获取页面中所有的图片 前言 pythoy的scrapy框架是大名鼎鼎,Jsoup则为Java框架的爬虫 准备工作 1.下载jsou ...

  2. java爬虫---Jsoup

    简单易懂的java爬虫-Jsoup 做个简单的Demo,爬取酒店的基本信息,酒店名称.酒店地址.酒店星级.酒店的图片等.这里考虑在哪个网站爬取这些数据呢?第一个想到的就是X程上. Jsoup爬取的是网 ...

  3. java爬虫(jsoup)实现搜狗图片一键下载

    java爬虫(jsoup)实现搜狗图片一键下载 import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.no ...

  4. java爬虫解析script_详解java爬虫jsoup解析多空格class数据

    在使用jsoup爬取其他网站数据的时候,发现class是带空格的多选择,如果直接使用doc.getElementsByClass("class的值"),这种方法获取不到想要的数据. ...

  5. 采集 58同城 房产数据信息 | Java爬虫 Jsoup

    一个数据采集系统(通俗的说就是爬虫),用来采集 58同城 房产 | 郑州中的房屋数据.使用 Java 语言和Jsoup库编写,这里分享给大家. 最后采集的数据结果 CSV 文件保存的,如下所示 说明 ...

  6. java jsoup 网络爬虫 jsoup解析html Java爬虫 Jsoup爬虫 jsoup例子

    java jsoup 网络爬虫 java jsoup 网络爬虫 学习例子(一)抓取豆瓣电影名称+推荐星级 java jsoup 网络爬虫 学习例子(二)只抓取豆瓣电影5星(力荐)电影名称 java j ...

  7. JAVA爬虫Jsoup,抓取房价

    里面的命名很烂,但能跑出来效果. 依赖: <!-- https://mvnrepository.com/artifact/org.jsoup/jsoup --> <dependenc ...

  8. Java爬虫Jsoup的使用

    Jsoup的使用 0. Jsoup介绍 1. Get请求 2. Post请求 3. 通过document获取元素 4. 练习Demo 练习1 练习2:获取所有图片 练习3获取商品 练习4 下载图片 5 ...

  9. Java爬虫Jsoup简易使用

    一.准备工作 1.下载jsoup工具,如果是maven项目,请在pm.xml中加入以下代码: jsoup虽然不是一个很强大的爬虫工具,但是它对于网页html文档的各种处理确实是很强大的,同时自身也是个 ...

  10. JAVA爬虫-Jsoup + JsoupXPath

    JsoupXPath是基于Jsoup的拓展,使用路径的形式解析XML和HTML文档.核心类为JXDocument.JsoupXPath的节点对象JXNode不仅可以获取标签节点,还可以获取属性节点. ...

最新文章

  1. UI素材|让设计有愉悦的体验,app交互动效的重要性!
  2. vue 指令 v-text v-html v-pre
  3. 从“判断力”到“创造力”:GAN 在图像生成上的应用
  4. ORB_SLAM2探秘 第三章 LoopClosing线程
  5. 六种实现元素水平居中
  6. JAVA集合系列(1):集合的整体框架
  7. oracle instantclient 64,instantclient 64位
  8. 吴恩达机器学习教程中文笔记目录
  9. SQLyog安装地址
  10. 迅捷PDF转换器怎样将PDF文件转换为HTML网页
  11. 开发者在掘金路上的选择
  12. 面试总结+网上查阅的智力题
  13. Android-状态机算法思想实现礼物连击需求
  14. 深入学习TCPIP协议
  15. 用户-用户生命周期切分(下)
  16. Win11最新KB5019980(22621.819)更新内容详解
  17. python将多个3维数组转换成4维数组时,出现(m,)
  18. python绘制地图的第三方库_10个用于GIS和地图绘制的Python库
  19. 前端16天--IFC、BFC、H5新特性、选择器、伪类元素、扩展盒模型、圆角、盒子阴影等--2021/4/21
  20. java 动态导出word文档 文档合并分页,浏览器下载,生成,动态表格,加图片

热门文章

  1. Normalize.css的使用及下载
  2. python写网页flash游戏辅助_会玩 | 使用 Python + Selenium制作Flash游戏辅助
  3. 网络工程师笔记--网络管理技术
  4. 解决webpack5打包html中图片后图片无法显示问题
  5. DelphiXe Ansistring使用注意事项
  6. html 数据库 留言板,使用html5本地数据库留言本代码分享
  7. 如何在外网访问家里电脑上的文件?
  8. android移动开发慕课版本_Android移动开发基础教程(慕课版)
  9. 华为路由器支持ftp服务器,华为路由器FTP配置详解
  10. 伪随机序列MATLAB实现