Xpath解析

news2024/10/7 14:29:12

目录

Xpath的简介:

简介:

相关概念:

Xpath的使用:

安装:

用法:

第一步:准备html

第二步:将html构造出etree对象

第三步:使用etree对象的xpath()方法配合xpath表达式来完成对数据的提取


Xpath的简介:

简介:

XPath即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言。

XPath基于XML的树状结构,提供在数据结构树中找寻节点的能力。起初XPath的提出的初衷是将其作为一个通用的、介于XPointer与XSL间的语法模型。但是XPath很快地被开发者采用来当作小型查询语言。

HTML属于XML的一个子集,所以可以用Xpath解析XML

相关概念:

<book>
    <id>1</id>
    <name>技术人才</name>
    <price>5w</price>
    <author>
        <nick>程序猿</nick>
        <nick>码农</nick>
    </author>
</book>
book,id,,name,price,author都被称为节点.
Id,name,price,author被称为book的子节点
book被称为id,name,price,author的父节点
id,name,price,author被称为同胞节点

Xpath的使用:

安装:

pip install lxml

用法:

第一步:准备html

html = """
<body>
    <ul>
        <li><a href="http://www.baidu.com">百度
</a></li>
        <li><a href="http://www.google.com">谷歌
</a></li>
        <li><a href="http://www.sogou.com">搜狗
</a></li>
    </ul>
    <ol>
        <li><a href="qiche">汽车</a></li>
        <li><a href="huoche">火车</a></li>
        <li><a href="feiji">飞机</a></li>
    </ol>
</body>
</html>
"""

第二步:将html构造出etree对象

from lxml import etree
html = """
<body>
    <ul>
        <li><a href="http://www.baidu.com">百度
</a></li>
        <li><a href="http://www.google.com">谷歌
</a></li>
        <li><a href="http://www.sogou.com">搜狗
</a></li>
    </ul>
    <ol>
        <li><a href="qiche">汽车</a></li>
        <li><a href="huoche">火车</a></li>
        <li><a href="feiji">飞机</a></li>
    </ol>
</body>
</html>
"""
tree = etree.HTML(html)

第三步:使用etree对象的xpath()方法配合xpath表达式来完成对数据的提取

from lxml import etree
html = """
<body>
    <ul>
        <li><a href="http://www.baidu.com">百度
</a></li>
        <li><a href="http://www.google.com">谷歌
</a></li>
        <li><a href="http://www.sogou.com">搜狗
</a></li>
    </ul>
    <ol>
        <li><a href="qiche">汽车</a></li>
        <li><a href="huoche">火车</a></li>
        <li><a href="feiji">飞机</a></li>
    </ol>
</body>
</html>
"""
tree = etree.HTML(html)
result = tree.xpath("/html/body/ul/li/a/@href")
print(result)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1539851.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux--Ubuntu安装【保姆级教程】

Linux操作系统时程序员必须要学的操作系统。接下来我们就来看一下Linux操作系统是如何安装的 我们在 Vmware 虚拟机中安装 linux 系统&#xff0c;所以需要先安装 vmware 软件&#xff0c;然后再 安装 Linux 系统。 一.所需安装文件&#xff1a; Vmware 下载地址(现在最新版的…

GraalVM详细安装及打包springboot、java、javafx使用教程(打包springboot3篇)

前言 在当前多元化开发环境下&#xff0c;Java作为一种广泛应用的编程语言&#xff0c;其应用部署效率与灵活性的重要性日益凸显。Spring Boot框架以其简洁的配置和强大的功能深受开发者喜爱&#xff0c;而JavaFX则为开发者提供了构建丰富桌面客户端应用的能力。然而&#xff…

01.重新认识文件(Linux基本概念)

知识引入&#xff1a; 我们经常使用word或者wps写的论文、作业等都是文件&#xff0c;而我们这样对文件的认识也比较片面。我们是否思考过&#xff0c;如果文件里面没有写东西&#xff0c;那么计算机会不会保存呢&#xff1f;答案是&#xff0c;肯定会的。因为我们每次建的空文…

SpringBoot如何替换启动图标

SpringBoot项目在启动时会出现一个默认的启动图案 . ____ _ __ _ _/\\ / ____ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | _ | _| | _ \/ _ | \ \ \ \\\/ ___)| |_)| | | | | || (_| | ) ) ) ) |____| .__|_| |_|_| |_\__, | / / / /|_||___//_/_/_/::…

Matlab|基于条件风险价值CVaR的微网动态定价与调度策略

目录 1 主要内容 模型示意图 电能交易流程 模型亮点 2 部分代码 3 程序结果 4 下载链接 1 主要内容 程序复现文章《A cooperative Stackelberg game based energy management considering price discrimination and risk assessment》&#xff0c;建立基于主从博弈的考虑…

2024年计算机三级|数据库习题整理(自用④)

所有题目均来自【三级数据库技术基础题库】&#xff0c;此博客仅为知识点的补充&#xff0c;用于自主的回顾学习&#xff0c;仅供参考。 选择题 知识点&#xff1a;数据库文件 透明性分级&#xff1a; ①分片透明性 > ②位置透明性 > ③局部数据模型透明性 数据仓库数据…

正版J-Link仿真器无输出电压问题

目录 一、Jink安装包获取二、正版J-Link无法输出3.3V问题引脚定义图 解决方案&#xff1a;J-Link Commander J-Link是支持仿真ARM内核芯片的JTAG仿真器 一、Jink安装包获取 官网&#xff1a; https://www.segger.com/downloads/jlink/ 二、正版J-Link无法输出3.3V问题 今天…

PostgreSQL中控制文件的解析与恢复

最近遇到有人问起PG中控制文件的一些使用问题,总结了一下。 1、PG控制文件简介 1.1、存储的位置 它的路径位于: 相关信息,可以用命令pg_controldata得到: [10:41:27-postgres@centos2:/var/lib/pgsql/14/data/global]$ pg_controldata -D $PGDATA pg_control version …

蓝桥杯-02-2023蓝桥杯c/c++省赛B组题目

参考 2023 年第十四届蓝桥杯 C/C B组省赛题解 2023蓝桥杯c/c省赛B组题目(最全版)&#xff1a; A&#xff1a;日期统计 这题方法应该很多&#xff0c;没有和别人讨论想法。我的解法思路是&#xff1a;先 load 函数生成所有这一年的合法日期&#xff0c;然后枚举所有可以从数据…

为什么独享ip会更高效?

随着互联网的蓬勃发展&#xff0c;代理IP因其特性&#xff0c;也备受关注&#xff0c;代理IP又有分共享代理IP和独享代理IP&#xff0c;但&#xff0c;无论是在数据采集方面&#xff0c;还是在其他业务场景上&#xff0c;独享代理IP似乎会更受用户欢迎一点&#xff0c;这到底是…

SpringCloud之网关组件Gateway学习

SpringCloud之网关组件Gateway学习 GateWay简介 Spring Cloud Gateway是Spring Cloud的⼀个全新项目&#xff0c;目标是取代Netflix Zuul&#xff0c;它基于Spring5.0SpringBoot2.0WebFlux&#xff08;基于高性能的Reactor模式响应式通信框架Netty&#xff0c;异步⾮阻塞模型…

每日一题 --- 977. 有序数组的平方[力扣][Go]

今天这一题和昨天的知识点是一样的&#xff0c;就是双指针法。 题目&#xff1a; 给你一个按 非递减顺序 排序的整数数组 nums&#xff0c;返回 每个数字的平方 组成的新数组&#xff0c;要求也按 非递减顺序 排序。 示例 1&#xff1a; 输入&#xff1a;nums [-4,-1,0,3,1…

Zero-Change Object Transmission for Distributed Big Data Analytics——论文泛读

ATC 2022 Paper 问题 分布式大数据分析在很大程度上依赖于Java和Scala等高级语言的可靠性和多功能性。然而&#xff0c;这些高级语言也为数据传输制造了障碍。要在Java虚拟机&#xff08;JVM&#xff09;之间传输数据&#xff0c;发送方应将对象转换为字节数组&#xff08;序…

ArmSoM-Sige RK3588开发板产品简介

让我们在 5 分钟内了解 Sige7。 简介​ ArmSoM-Sige7采用Rockchip RK3588新一代旗舰级八核64位处理器&#xff0c;主频高达2.4GHz&#xff0c;6 TOPS算力NPU&#xff0c;最大可配32GB大内存。支持8K视频编解码&#xff0c;拥有丰富的接口&#xff0c;支持双2.5G网口、WiFi6 &…

虚拟机开机启动失败,进入(initramfs)解决办法

虚拟机开机启动失败&#xff0c;进入&#xff08;initramfs&#xff09;解决办法 打开虚拟机中Ubuntu时进入(initramfs)&#xff0c;导致无法进入桌面。问题如下图显示&#xff1a; 命令行输入 fsck -y /dev/sda5输入 exit进入 选择root 后回车 输入虚拟机的密码 进入 root …

项目成功秘诀:高效管理策略确保按时交付v2

一、项目成功的重要性 在当今竞争激烈的商业环境中&#xff0c;项目的成功对于企业的生存和发展具有至关重要的意义。项目的成功不仅意味着企业能够达成既定的业务目标&#xff0c;还能提升企业的市场地位、增强品牌影响力&#xff0c;并为企业的可持续发展奠定坚实基础。我们…

C++ Primmer 12.3文本查询程序(自己原来写的,跟课本中比较)

题目要求如下 1.自己版本 #pragma once #include <fstream> #include <string> #include <vector> #include <set> #include <map> #include <iostream> #include <sstream>using namespace std;int main() {ifstream t_if (&quo…

乱码问题,字符流原理

首先科普一下知识&#xff0c;我们知道ASCII码中有128的数字&#xff0c;符号&#xff0c;或大小写字母&#xff0c;这对于英文来说已经够用了&#xff0c;一个字母占用一个字节&#xff08;一个字节8bit&#xff09;&#xff0c; 存储的过程是这样的&#xff0c;一个字母w&…

二进制王国(蓝桥杯备赛)【sort/cmp的灵活应用】

二进制王国 题目链接 https://www.lanqiao.cn/problems/17035/learning/?contest_id177 题目描述 思路 这里就要灵活理解字典序排列&#xff0c;虽然string内置可以直接比较字符串字典序&#xff0c;但是在拼接时比较特殊&#xff0c;比如 11的字典序小于110&#xff0c;但…

鸿蒙Harmony应用开发—ArkTS(@Extend装饰器:定义扩展组件样式)

在前文的示例中&#xff0c;可以使用Styles用于样式的扩展&#xff0c;在Styles的基础上&#xff0c;我们提供了Extend&#xff0c;用于扩展原生组件样式。 说明&#xff1a; 从API version 9开始&#xff0c;该装饰器支持在ArkTS卡片中使用。 装饰器使用说明 语法 Extend(UI…