XML:Jsoup/Xpath

爬虫基础练习: 基于 java + Jsoup + xpath 爬取51job网站 最基本的网页爬虫练习 爬取51jb网站,并将数据写入Excel中 需要导入jsoup包和POI相关包 JSoup简介 jsoup是一款Java的HTML解析器,主要用来对HTML解析, 可通过DOM,CSS以及类似于jQuery的操作方法取出和操作数据。 主要功能 从一个URL,文件或字符串中解析HTML 使用DOM或CSS选择器来查找、取出数据使用DOM或CSS选择器来查 找、取出数据 可操作HTML元素、属性、文本可操作HTML元素、属性、文本 XPath XPath,全称 XML Path L 阅读详情

Content:

    1. Jsoup:页面解析工具
    2. 对象的使用
    3. 快捷查询

一、Jsoup:页面解析工具

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

  • 快速入门:
    1. 新建一个普通的JavaSE项目,导入jar包   jsoup-1.12.1.jar下载链接
    2. 获取Document对象
    3. 获取对应的标签Element对象
    4. 获取数据

  • 代码:
    public class JsoupDemo1 {
        public static void main(String[] args) throws IOException {
            //1.导入jsoup工具的jar包
            //2.获取Document对象,根据xml文档获取
            //2.1获取student.xml的path
            String path = JsoupDemo1.class.getClassLoader().getResource("student.xml").getPath();
            //2.2解析xml文档,加载文档进内存,获取dom树-->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. Jsoup:工具类,可以解析html或xml文档,返回Document
  • Jsoup.parse( );

      	 * parse:解析html或xml文档,返回Document
      	 * parse​(File in, String charsetName):解析xml或html文件的。
      	 * parse​(String html):解析xml或html字符串
      	 * parse​(URL url, int timeoutMillis):通过网络路径获取指定的html或xml的文档对象(做爬虫小程序)		 
    
    /**
     * Jsoup对象功能
     */
    public class JsoupDemo2 {
        public static void main(String[] args) throws IOException {
            //1.获取student.xml的path
            String path = JsoupDemo2.class.getClassLoader().getResource("student.xml").getPath();
            //解析xml文档,加载文档进内存,获取dom树--->Document
            Document document = Jsoup.parse(new File(path), "utf-8");
            System.out.println(document);
    
           //2.parse​(String html):解析xml或html字符串
            String str = "xml或者是HTML内容";
            Document document = Jsoup.parse(str);
            System.out.println(document);
    
           //3.parse​(URL url, int timeoutMillis):通过网络路径获取指定的html或xml的文档对象
            URL url = new URL("https://baike.baidu.com/item/jsoup/9012509?fr=aladdin");//代表网络中的一个资源路径
            Document document = Jsoup.parse(url, 10000);
            System.out.println(document);
    
        }
    
    }
    

2. Document:文档对象。代表内存中的dom树
  • document.getElementsByTag(“student”);

  • Elements elements1 =document.getElementsByAttribute(“id”);

  • 一般得到是某标签和其子标签对、及其内容

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

3. Elements:元素Element对象的集合。可以当做 ArrayList来使用

4. Element:元素对象
  • 通过Element元素对象,获取的是子标签中的元素。然后再使用.text( )方法,可以获取子标签的文本__[用作爬虫] https://www.cnblogs.com/blackdeng/p/6802126.html

      	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():获取文本内容
      				* String html():获取标签体的所有内容(包括字标签的字符串内容)		
    

Element对象功能

public class JsoupDemo4 {
    public static void main(String[] args) throws IOException {
        //1.获取student.xml的path
        String path = JsoupDemo4.class.getClassLoader().getResource("student.xml").getPath();
        //2.获取Document对象
        Document document = Jsoup.parse(new File(path), "utf-8");
     
        //通过Document对象获取name标签,获取所有的name标签,可以获取到两个
        Elements elements = document.getElementsByTag("name");
        System.out.println(elements.size());
        System.out.println("----------------");
        //通过Element对象获取子标签对象
        Element element_student = document.getElementsByTag("student").get(0);
        Elements ele_name = element_student.getElementsByTag("name");
        System.out.println(ele_name.size());

        //获取student对象的属性值
        String number = element_student.attr("NUMBER");
        System.out.println(number);
        System.out.println("------------");
        //获取文本内容
        String text = ele_name.text();
        String html = ele_name.html();
        System.out.println(text);
        System.out.println(html);
    }

}
5. Node:节点对象:是Document和Element的父类



三、快捷查询:

  • 同上,需要查找指定标签下的元素内容时,需要一步步的解析标签,比较麻烦!
(1)selector:选择器
  • 使用的方法:Elements select​(String cssQuery)

  • 语法:参考Selector类中定义的语法

    /**
    	 *选择器查询
    	 */
    	public class JsoupDemo5 {
    	    public static void main(String[] args) throws IOException {
    	        //1.获取student.xml的path
    	        String path = JsoupDemo5.class.getClassLoader().getResource("student.xml").getPath();
    	        //2.获取Document对象
    	        Document document = Jsoup.parse(new File(path), "utf-8");
    	
    	        //3.查询name标签
    	        
    	        Elements elements = document.select("name");
    	        System.out.println(elements);
    	        System.out.println("=----------------");
    	        //4.查询id值为itcast的元素
    	        Elements elements1 = document.select("#cainiao");
    	        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=\"cainiao_0001\"]");
    	        System.out.println(elements2);
    	        System.out.println("----------------");
    	
    	        //5.2获取student标签并且number属性值为heima_0001的age子标签
    	        Elements elements3 = document.select("student[number=\"cainiao_0001\"] > age");
    	        System.out.println(elements3);
    	
    	    }
    	
    	}
    
  • student.xml

    <?xml version="1.0" encoding="UTF-8" ?>
    		
    		<students>
    			<student number="cainiao_0001">
    				<name id="cainiao">
    					<xing>张</xing>
    					<ming>三</ming>
    				</name>
    				<age>18</age>
    				<sex>male</sex>
    			</student>
    			<student number="heima_0002">
    				<name>jack</name>
    				<age>18</age>
    				<sex>female</sex>
    			</student>
    		
    		</students>
    

(2)XPath:
  • 概念:XPath即为XML路径语言,它是一种用来确定XML(标准通用标记语言的子集)文档中某部分位置的语言

  • 使用Jsoup的Xpath需要额外导入jar包。在这里插入图片描述

  • 查询w3cshool参考手册,使用xpath的语法完成查询

  • 思路:利用Jsoup获取Document对象,然后结合Xpath的Jar包中的api和语法,来选取xml中的指定元素。

  • XPath查询

    /**
     *XPath查询
     */
    public class JsoupDemo6 {
        public static void main(String[] args) throws IOException, XpathSyntaxErrorException {
            //1.获取student.xml的path
            String path = JsoupDemo6.class.getClassLoader().getResource("student.xml").getPath();
            //2.获取Document对象
            Document document = Jsoup.parse(new File(path), "utf-8");
    
            //3.根据document对象,创建JXDocument对象
            JXDocument jxDocument = new JXDocument(document);
    
            //4.结合xpath语法查询
            //4.1查询所有student标签
            List<JXNode> jxNodes = jxDocument.selN("//student");
            for (JXNode jxNode : jxNodes) {
                System.out.println(jxNode);
            }
    
            System.out.println("--------------------");
    
            //4.2查询所有student标签下的name标签
            List<JXNode> jxNodes2 = jxDocument.selN("//student/name");
            for (JXNode jxNode : jxNodes2) {
                System.out.println(jxNode);
            }
    
            System.out.println("--------------------");
    
            //4.3查询student标签下带有id属性的name标签
            List<JXNode> jxNodes3 = jxDocument.selN("//student/name[@id]");
            for (JXNode jxNode : jxNodes3) {
                System.out.println(jxNode);
            }
            System.out.println("--------------------");
            //4.4查询student标签下带有id属性的name标签 并且id属性值为itcast
    
            List<JXNode> jxNodes4 = jxDocument.selN("//student/name[@id='itcast']");
            for (JXNode jxNode : jxNodes4) {
                System.out.println(jxNode);
            }
        }
    
    }
    
用python画年度和月度的日历图 用python画各种日历图,可以区分月份来画也可以画一整年的,日历图中可以体现自己的信息 阅读详情

相关推荐

从BIOS到路由器:深入拆解SPI NOR Flash的硬件连接与‘芯片内执行’(XIP)奥秘

本文深入解析SPI NOR Flash的硬件连接与‘芯片内执行’(XIP)技术,从BIOS到路由器的应用场景出发,详细介绍了其架构精髓、典型连接方案、时序设计及性能优化方法。通过实际案例和参数对比,帮助开发者掌握NOR Flash在嵌入式系统中的关键作用与设计技巧,提升电路设计效率与可靠性。

weixin_30522183的博客 492

Jsoup和JsoupXpath使用方法

Jsoup jsoup 是一款Java 的XML、HTML解析器,可直接解析某个URL地址、HTML文本内容和已经存在的文件。 XML DOM和HTML DOM一样,都会将xml文件中的所有标签记载到内存并生成一个document对象保存他们   jsoup获取xml、html文件的document对象三种方式: 1.解析一个字符串获取Document对象 static  Docume...

weixin_42022555的博客 1万+

【3D目标检测】MMdetection3d——搭建IS-Fusion环境+nuScenes数据集训练

搭建IS-Fusion环境+nuScenes数据集训练

qq_44703886的博客 2323

Jsoup支持Xpath

path是专业的xml结构化文档的查询语言,语法功能强大,本文不涉及xpath语法教程。 jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据,但是选取某个元素时还是没有xpath那么简单直接,而且xpath带了很多选择库。 然而遗憾的时,jsoup并不支持xpa...

God__is__a__girl的博客 1137

别再只设接触压力了!用ANSYS Workbench模拟O型圈密封泄漏的完整流程

本文详细介绍了在ANSYS Workbench中模拟O型圈密封泄漏的完整流程,重点解析了流体渗透压力载荷的设置与应用。通过双物理场耦合模型和精确的参数配置,帮助工程师准确评估密封性能,避免传统方法仅考虑接触压力的局限性。文章还提供了常见问题的解决方案和工程实践建议,提升密封设计的可靠性。

weixin_30372371的博客 401

EtherCAT-7 从站代码移植-SPI

STM32F103 + AX58100,从站代码移植。

tianya_xuan的博客 3571

获取html元素的XPath路径

1 &lt;!DOCTYPE html&gt; 2 &lt;html&gt; 3 &lt;head&gt; 4 &lt;script src="/jquery/jquery-1.11.1.min.js"&gt; 5 &lt;/script&gt; 6 &lt;script&gt; 7 8 function readXPath(element) { 9 if (e

weixin_33781606的博客 1135

“反激电源”是AC/DC隔离电源还是DC/DC隔离电源?

所以在一些场景,我们的输入电压是一个DC,但是我们仍然需要隔离电源的需求,我们就会只采用图9.2的右半部分。在这个场景下“反激电源”是DC/DC。所以此AC/DC的本质是将AC变成高压的DC之后,用带隔离变压器的反激式开关电源产生一个隔离的、稳定的直流电压。一般在讲述各种电源的拓扑的文章和书籍都是在讲述AC/DC的电源拓扑分类的时候,讲述Flyback。反激式开关电源是指使用反激高频变压器隔离输入输出回路的开关电源,反激式隔离变压器开关电源重点表述的是开关电源包含变压器的拓扑结构。

qq_43416206的博客 1297

java jsoupxpath_Xpath、Jsoup、Xsoup(我的Java爬虫之二)

从Xpath说起什么是XpathXPath是W3C的一个标准。它最主要的目的是为了在XML1.0或XML1.1文档节点树中定位节点所设计。XPath是一种表达式语言,它的返回值可能是节点,节点集合,原子值,以及节点和原子值的混合等。语法选取结点表达式描述/从根节点选取//从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。.选取当前结点..选取当前节点的父结点@选取属性实例路径表达式结果bo...

weixin_36184718的博客 628

GeoServer下载与安装(详细图文教程)

GeoServer官方版可以方便的发布地图数据,允许用户对特征数据进行更新、删除、插入操作,通过 GeoServer 可以比较容易的在用户之间迅速共享空间地理信息。

大剑师兰特的GIS世界 3276

基于STM32F103的智能门禁门锁门卫系统设计

本文设计了一种基于STM32F103单片机的智能门禁系统,集成了密码、射频IC卡和指纹识别三种验证方式。系统采用模块化设计,包含MFRC522射频模块、AS608指纹模块、矩阵键盘、OLED显示和舵机控制等硬件,实现了身份验证、密码修改、IC卡/指纹管理以及安全防护功能。测试结果表明系统响应迅速(密码验证250ms、指纹验证600ms)、功耗低(待机50mA),且具备掉电密码保存功能。该系统操作简便、功能完善,适用于家庭和办公场所,具有较高实用价值。未来可扩展远程控制、人脸识别等功能以进一步提升智能化水平。

3254968421的博客 320

JsoupXpath: 简洁高效的HTML解析库

JsoupXpath: 简洁高效的HTML解析库 在Web开发中,获取和解析HTML内容是一项常见的任务。对于Java开发者来说,,它为Jsoup添加了XPath支持,让HTML解析变得更加高效和直观。 项目简介 JsoupXpath是由@zhegexiaohuozi创建的一个扩展项目,旨在提供一个简单的接口,使得开发者能够使用XPath表达式来提取和操作HTML元素。如果你熟悉XPath,那么这...

gitblog_00033的博客 599

AI应用架构师实战:超算中AI与量子计算融合的初探与架构

当大模型的算力需求突破E级超算的极限,当量子计算的“量子优势”从实验室走向真实场景,超算+AI+量子计算的融合架构成为解决复杂问题的关键路径。本文从架构师的实战视角出发,系统拆解三者融合的底层逻辑:从“计算本质”的第一性原理推导,到“量子-经典异构”的架构设计;从“量子机器学习”的代码实现,到“金融/医药”的场景落地。我们将回答:如何用超算支撑量子计算的噪声抑制与纠错?如何用量子计算加速AI模型的训练与推理?如何设计可扩展、高可用的融合系统?最终给出架构师的实战指南——从技术选型到运营管理的全流程方法论。

AIGC应用创新大全的博客 924

XML学习 Day1 : xml / Jsoup解析器 / selector选择器 /Xpath选择器

XML 1.1XML概述

qq_40027172的博客 301

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

爬虫实战:页面解析详细指南(正则表达式、XPath、jsoup、Gson)

4 种解析技术的介绍:正则表达式、XPath、jsoup、Gson

magicpenta的博客 3005

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Java解析XML文件(Jsoup,Xpath)

解析xml的方式 DOM(服务器端):将标记语言文档一次性加载进内存,在内存中形成一颗dom树 优点:操作方便,可以对文档进行CRUD的所有操作 缺点:占内存 SAX(移动端):逐行读取,基于事件驱动的。 优点:不占内存。 缺点:只能读取,不能增删改 xml常见的解析器 JAXP:sun公司提供的解析器,支持dom和sax两种思想 DOM4J:一款非常优秀的解析器 Jsoup:j...

qq_41112238的博客 1159

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

xml解析之Jsoup器

Jsoup介绍 百度百科:jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。 Jsoup使用 导包 代码例子 新建一个xml文件。我放在src目录下 <?xml version="1.0" encoding="UTF-8" ?> <Programmers> <Programmer id=.

林高禄 9126

Jsoup_Xpath语言解析HTML和XML

Xpath语言: XPath即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言。 XPath基于XML的树状结构,提供在数据结构树中找寻节点的能力。 使用步骤 导入Jsoup_Xpath-0.3.2.jar包,不用说了吧 创建Xpath对象,根据document对象创建 public JXDocument JXDocument(Doc...

qq_41521264的博客 298

java jsoup xml_Jsoup中Xpath的使用

wudi19malewudi19malepackage cn.itcast.xml.jsoup;import java.io.File;import java.io.IOException;import java.util.List;import org.jsoup.Jsoup;import org.jsoup.nodes.Document;import org.jsoup.nodes.Eleme...

weixin_35632603的博客 131

java jsoupxpath_Jsoup中Xpath的使用

wudi19malewudi19malepackage cn.itcast.xml.jsoup;import java.io.File;import java.io.IOException;import java.util.List;import org.jsoup.Jsoup;import org.jsoup.nodes.Document;import org.jsoup.nodes.Eleme...

weixin_34621309的博客 544

XML解析神奇比较Jsoup or Xpath

转载自http://qindongliang.iteye.com/blog/2162519 今天简单测了下使用Jsoup和Xpath解析XML的文件的方便程度,两者都可以完成解析,提取特定的元素或节点内容,但明显Jsoup更胜一筹,我们都知道Xpath是专业的xml结构化文档的查询语言,虽然语法功能强大,但是代码还是比较繁琐。虽然jsoup的出现,并不是专门用来解析XML使用的,但是使用jsou

马万明的专栏 7117

410、Jsoup的快速查询---使用xpath选择器

快速查询 如果要快速查询某个标签下的某个标签,按照上面的需要一步一步获取,不方便,就需要一如快速查询方式。 (1)、selector:选择器(类似CSS里面的选择器) * 使用方法:Elements select(String cssQuery) * 语法:参考Jsoup中Selector类中定义的语法 ...

l0510402015的博客 1333

xml--解析--Jsoup--根据Xpath查询

黑马程序员 xml–解析–Jsoup–根据Xpath查询 //1.获取student.xml的path String path = JsoupDemo6.class.getClassLoader().getResource("student.xml").getPath(); //2.获取Document对象 Document document = Jsoup.parse(new

qq_40649503的博客 574

Xml-Schema-Jsoup(爬虫)-Xpath

XML 概念:Extensible Markup Language 可扩展标记语言 可扩展:标签都是自定义的。 <user> <student>抢properties的饭碗 功能 存储数据 配置文件 在网络中传输 xml与html的区别 xml标签都是自定义的,html标签是预定义。 xml的语法严格,html语法松散 xml是存储数据的,htm...

欧气满满大顺顺的博客 1419

Jsoup解析xml

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

deskDopa的博客 2918

32.2 xml解析、Jsoup解析器、 xml快捷查询方式(Jsoup解析器的selector选择器、 XPath查询)

目录 1 xml解析 2Jsoup解析器 2.1 3种常见的Jsoup解析方式 2.2Jsoup中document文档对象 2.2Jsoup中Element元素对象 3 xml快捷查询方式 3.1 selector:选择器 3.2XPath查询 1 xml解析 xml文档操作有两种方式:解析xml和写入xml 写入:将内存中的数据保存到xml文档中。持久化的存储 xml解析:操作xml文档,将文档中的数据读取到内存中 xml解析方式: DOM:将标记语言文档一次性加...

Birdlun的博客 687
上一篇: XML:概念和应用
下一篇: Tomcat & Servlet 说明文档
UP青年
博客等级 码龄10年 12粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值