java入坑之Jsoup(待补充)

2023-09-21 08:05:22

一、快速入门

1.1配置

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

1.2解析xml

Jsoup:jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery
的操作方法来取出和操作数据。
* 快速入门:
步骤:
1.导入jar包
2.获取Document对象
3.获取对应的标签Element对象
4.获取数据

1.2.1所用xml

<?xml version="1.0" encoding="UTF-8" ?>
<!--
        1.填写xml文档的根元素
        2. |入xsi前缀.__xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        3. <tex>\overline {5}</tex> 入xsd文件命名空间.  xsi:schemaLocation="http://www.itcast.cn/xml  student.xsd"
        4.为每一个xsd约束声明一个前缀,作为标识_xmlns="http://www.itcast.cn/xml"
        -->
<students >
    <student number="heima_0001">
        <name>tom</name>
        <age>18</age>
         <sex>male</sex>
    </student>
    <student number="heima_0002">
        <name>to</name>
        <age>18</age>
        <sex>female</sex>
    </student>
</students>

1.2.2Jsoup解析

package org.example;

import java.io.File;
import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class JsoupDemo1 {
    public static void main(String[] args) throws IOException {
//2.获取Document对象,根据xml文档获取
//2.1获取student.xml的path
        String path = JsoupDemo1.class.getClassLoader().getResource("student.xml").getPath();
//2.2解析xml文档,加载文档进内存,获取dam树--->Document
        Document document = Jsoup.parse(new File(path), "utf-8");
//3.获取元素对象_Element
        Elements elements = document.getElementsByTag("name");
        System.out.println(elements.size());
//3.1获取第一个name的Element对象
        Element element = elements.get(0);
//3.2获取数据
        String name = element.text();
        System.out.println(name);
    }
}

1.3对象的使用

1.3.1.Jsoup对象

工具类,可以解析html或xml文档,返回Document
parse:解析html或xml文档,返回Document

  • parse(File in,String charsetName):解析xml或html文件的。
  • parse(String html):解析xml或html字符串
  • parse(URL url,int timeoutMillis):通过网络路径获取指定的html或xml的文档对象

1.3.2Document对象

Document:文档对象。代表内存中的dom树
* 获取Element对象

  • getElementById(String id):根据id属性值获取唯一的element对象
  • getElementsByTag(String tagName):根据标签名称获取元素对象集合
  • getElementsByAttribute(String key):根据属性名称获取元素对象集合
  • getElementsByAttributeValue(String key, String value):根据对应的属性名和属性值获取元素对象集合

1.3.3.Element对象

.Elements:元素Element对象的集合。可以当做 ArrayList<Element>来使用
Element:元素对象
1.获取子元素对象

  • getElementById(String id):根据id属性值获取唯一的element对象
  • getElementsByTag(String tagName):根据标签名称获取元素对象集合
  • getElementsByAttribute(String key):根据属性名称获取元素对象集合
  • getElementsByAttributeValue(String key,String value):根据对应的属性名和属性值获取元素对象集合

2.获取属性值

  • * String attr(String key):根据属性名称获取属性值

3.获取文本内容

  • String text():获取文本内容 T
  • string  html();获取标签体的所有内容(包括字标签的字符串内容
package org.example;

import java.io.File;
import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class JsoupDemo1 {
    public static void main(String[] args) throws IOException {
//2.获取Document对象,根据xml文档获取
//2.1获取student.xml的path
        String path = JsoupDemo1.class.getClassLoader().getResource("student.xml").getPath();
//2.2解析xml文档,加载文档进内存,获取dam树--->Document
        Document document = Jsoup.parse(new File(path), "utf-8");
        Element element = document.getElementsByTag("student").get(0);
        Elements name = element.getElementsByTag("name");
        System.out.println(name.size());
    }
}

1.3.4Node对象

Node :节点对象
是Document和E lement的父类

1.4快速查询

快捷查询方式:
1.selector;选择器
* 使用的方法:Elements    select(String cssQuery)
*  语法:参考selector类中定义的语法
2.XPath:XPath即为XML路径语言,它是一种用来确定 'XML(标准通用标记语言的子集)文档中某部分位置的语言
* 使用Jsoup的Xpath需要额外导入jar包。 T
* 查询w3cshool参考手册,使用xpath的语法完成查询

通过选择器查询

package org.example;

import java.io.File;
import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class JsoupDemo1 {
    public static void main(String[] args) throws IOException {
//2.获取Document对象,根据xml文档获取
//2.1获取student.xml的path
        String path = JsoupDemo1.class.getClassLoader().getResource("student.xml").getPath();
//2.2解析xml文档,加载文档进内存,获取dam树--->Document
        Document document = Jsoup.parse(new File(path), "utf-8");
        //4.查询id值为itcast的元素
        Elements elements1 = document.select(  "#itcast");
        System.out.println(elements1);
        System.out.println("----------------");
//5.获取student标签并且number属性值为heima_0001的age子标签
//5.1.获取student标签并且number属性值为heima_0001
        Elements elements2 = document.select(  "student[number=\"heima_0001\"]");
        System.out.println(elements2);
        System.out.println("----------------");
//5.2获取student标签并且number属性值为heima_0001的age子标签
        Elements elements3 = document.select( "student[number=\"heima_0001\"] > age");
        System.out.println(elements3);

    }
}

更多推荐

DBAPI安装教程

安装教程请先下载安装包。默认账户admin/admin。为了便于您理解安装的时候需要配置的参数,请您先学习日志监控相关的功能设计本地部署单机版依赖java环境,先自行在服务器安装jdk8+,并配置环境变量下载安装包解压到需要安装的目录修改conf/application.properties文件中的以下配置#api访问

谷粒商城----rabbitmq

一、为什么要用MQ?三大好处,削峰,解耦,异步。削峰比如秒杀,或者高铁抢票,请求在某些时间点实在是太多了,服务器处理不过来,可以把请求放到MQ里面缓冲一下,把一秒内收到的1万个请求放到队列里面,花10分钟去消费队列里的请求。解耦比如有一个服务A每天都采集数据并计算各种数据,服务B需要调用服务A的接口获取数据,就在A开一

使用 PyTorch 的计算机视觉简介 (2/6)

一、说明在本单元中,我们从最简单的图像分类方法开始——一个全连接的神经网络,也称为感知器。我们将回顾一下PyTorch中定义神经网络的方式,以及训练算法的工作原理。二、数据加载的实践首先,我们使用pytorchcv助手来加载所有数据。!wgethttps://raw.githubusercontent.com/Micr

Buuctf web [SUCTF 2019]EasySQL

又是一道考察sql注入的题1、起手试探(主要看看输入什么内容有正确的回显)101'1'#发现只有在输入1的情况下有正常的回显,输入0或其他字符都没有回显,所以这题就要尝试堆叠注入了。ps:(如果想尝试其他注入方法,输入以下内容需要有回显1'报错1'#正确)2、爆库1;showdatabases;3、报表1;showta

dart 学习 之 字符串插值,空变量 null,避空运算符,条件属性访问,集合字面量,箭头语法

文章目录字符串插值(Stringinterpolation)空变量null避空运算符条件属性访问集合字面量箭头语法字符串插值(Stringinterpolation)下面是一些使用字符串插值的例子:Herearesomeexamplesofusingstringinterpolation:Stringresult字符串

【实战详解】如何快速搭建接口自动化测试框架?Python + Requests

摘要:本文主要介绍如何使用Python语言和Requests库进行接口自动化测试,并提供详细的代码示例和操作步骤。希望能对读者有所启发和帮助。前言随着移动互联网的快速发展,越来越多的应用程序采用WebAPI(也称为RESTfulAPI)作为数据交换的主要方式。针对API进行自动化测试已经变得非常重要,它可以让我们快速地

Vue Hooks 让Vue开发更简单与高效

VueHooks让Vue开发更简单与高效介绍VueHooks是一个基于Vue.js的插件,它提供了一种新的方式来编写Vue组件,使得开发更加简单和高效。它借鉴了ReactHooks的概念,通过使用Hooks,我们可以在不编写类组件的情况下,实现状态管理和生命周期处理。为什么使用VueHooks在传统的Vue开发中,我们

【c语言】详解结构体

目录什么是结构体?结构体的声明结构体变量的创建和初始化匿名结构体类型结构体的自引用结构体的初始化普通初始化指定初始化结构体内存对齐对齐规则默认对齐数的修改结构体传参什么是结构体?在学习每个类型之前我们需要了解其存在的意义,即什么是结构体?为什么要引入结构体这个类型呢?我们可以想象现实中我们是如何处理一个人信息的?假设现

Win10 家庭版 - 解决应用程序无法启动,因为应用程序的并行配置不正确的问题(System Default Context”的激活上下文生成失败)

Win10家庭版-解决应用程序无法启动,因为应用程序的并行配置不正确的问题(SystemDefaultContext”的激活上下文生成失败)系统环境遇到问题试过过程解决办法前天的时候,女盆友公司电脑遇到个问题:几乎所有的exe程序和软件都不能启动或者运行。我的第一个解决办法:重装即可。结果人家嫌挨个重装太麻烦。于是乎,

收款码的费率都是多少

不管是微信还是支付宝,商户最低的收款手续费率可以达到0.2%费率。一般我们普通商户的收款费率一般在0.6左右,当然也有使用0.3的,也就是1万元的费率是30-60块钱,对于一些流水比较大的商家来说,确实很有必要把这个手续费率降低。什么是收款手续费率?因为不管是微信还是支付宝,都是盈利性质的公司,他们开发了收款码这个功能

归并排序的思想

归并排序是一种基于分治思想的经典排序算法。它将待排序的数组分成两个部分,然后递归地对这两个部分进行排序,最后再将排序好的两个部分归并成一个有序的数组。具体实现过程如下:1.将待排序数组不断二分,直到只剩下一个元素,此时该元素就是有序的。2.将相邻的两个有序数组合并成一个有序数组。合并时,对于两个数组中首位元素进行比较,

热文推荐