Xpath解析

目录

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.mzph.cn/news/766017.shtml

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

相关文章

JAVA——volatile,wait,notife

文章目录 volatile关键字简识jvm内存模型内存上的优化问题的产生volatile的作用 wait&#xff08;&#xff09;wait()的作用 notify&#xff08;&#xff09;notify的唤醒顺序 volatile关键字 volatile关键字可以保证内存的可见性&#xff0c;什么是内存的可见性呢&#xff1f…

二叉树的链式结构和遍历(下)

又见面了&#xff0c;小伙伴们。今天我们继续来学习二叉树&#xff0c;今天的内容相对来说比较容易理解&#xff0c;前提是需要你们自己动手画图才会好理解。眼过千遍不如手过一遍。所以小伙伴们要多动手哦。直接开始今天的学习吧 1.二叉树链式结构的实现 1.1 前置说明 在学习…

如何成为顶尖程序员?

如何成为顶尖程序员&#xff1f; 程序员是一种特殊的职业&#xff0c;但为什么大多数程序员无法达到顶尖水平&#xff1f;本文探讨了几个可能的原因&#xff0c;包括缺乏热情和动力、基础和原理的不足、实践和经验的匮乏&#xff0c;以及思考和创新的欠缺。了解这些原因可以帮助…

基于SpringBoot+MyBatis+Vue的电商智慧仓储管理系统的设计与实现(源码+LW+部署+讲解)

前言 博主简介&#x1f468;&#x1f3fc;‍⚕️&#xff1a;国内某一线互联网公司全栈工程师&#x1f468;&#x1f3fc;‍&#x1f4bb;&#xff0c;业余自媒体创作者&#x1f4bb;&#xff0c;CSDN博客专家&#x1f3c6;&#xff0c;Java领域优质创作者&#x1f4d5;&#x…

Redis中文乱码问题

最近排查问题&#xff0c;发现之前的开发将日志写在redis缓存中&#xff08;不建议这样做&#xff09;&#xff0c;我在查看日志的时候发现没办法阅读&#xff0c;详细是这样的&#xff1a; 查阅资料后发现是进制问题&#xff0c;解决方法是启动客户端的时候将redis-cli改为red…

【go从入门到精通】if else 条件控制

作者简介&#xff1a; 高科&#xff0c;先后在 IBM PlatformComputing从事网格计算&#xff0c;淘米网&#xff0c;网易从事游戏服务器开发&#xff0c;拥有丰富的C&#xff0c;go等语言开发经验&#xff0c;mysql&#xff0c;mongo&#xff0c;redis等数据库&#xff0c;设计模…

电脑安装双系统windows和ubuntu server

1.创建Ubuntu-server的启动盘 首先要从官网下载Ubuntu-server18.04的ISO文件&#xff0c;用rufs烧录到U盘。如下所示 2. 磁盘分区 在windows创建两个盘&#xff08;linuxboot 和linuxroot&#xff09;&#xff0c;后面一个一个用于boot&#xff0c;一个用于root. 3.开机U盘启…

Flutter学习10 - Json解析与Model使用

对于网络请求返回的 Json 数据&#xff0c;一般会进行如下解析&#xff1a; 将 Json String 解析为 Map<String, dynamic>将 Json String 解析为 Dart Model 发起一个返回 Json String 的网络请求 import package:http/http.dart as http;void main() {_doGet(); }_do…

用好商用无人自助咖啡机,真正实现“AI智能”制饮!

随着科技的不断进步和智能化技术的广泛应用&#xff0c;商用无人自助咖啡机作为餐饮行业的新宠&#xff0c;正逐渐改变着我们的生活方式和消费体验。通过结合人工智能技术&#xff0c;这些无人自助咖啡机正在实现真正的“AI智能”制饮&#xff0c;为消费者带来全新的咖啡体验。…

Qt 项目使用visual studio 进行开发调试

https://marketplace.visualstudio.com/items?itemNameTheQtCompany.QtVisualStudioTools2015 https://devblogs.microsoft.com/cppblog/bring-your-existing-qt-projects-to-visual-studio/ 正常Qt开发中&#xff0c;使用Qt Creator 进行windows下MSVC编译器的调试是一件挺麻…

Medium 级别反射型 XSS 攻击演示(附链接)

环境准备 如何搭建 DVWA 靶场保姆级教程&#xff08;附链接&#xff09;https://eclecticism.blog.csdn.net/article/details/135834194?spm1001.2014.3001.5502 测试 打开靶场找到该漏洞页面 先右键检查输入框属性 跟 Low 级别是一样的&#xff0c;所以咱们直接输入带 HTM…

如何查看局域网内所有的ip和对应的mac地址

1、windows下查看 方法一、 按快捷键“winr”打开运行界面&#xff0c;输入“CMD”回车: 输入以下命令&#xff1a; for /L %i IN (1,1,254) DO ping -w 1 -n 1 192.168.0.%i 其中 192.168.0.%i 部分要使用要查询的网段&#xff0c;比如 192.168.1.%i 192.168.137.%i 172.16.2…

AI修复老照片的一些参数设置

很久没更新CSDN文章了&#xff0c;这次给粉丝带来老照片修复流程 1>用ps修图 图章工具 笔刷 画笔修复 2>高清放大 3>lineattile 重绘 4>上色 具体可参考我的B站视频。 下面是一些笔记。 best quality,masterpiece,photorealistic,8k,ultra high res,solo,ext…

概念解析 | 现象揭秘:经验模态分解的奥秘

注1:本文系"概念解析"系列之一,致力于简洁清晰地解释、辨析复杂而专业的概念。本次辨析的概念是:经验模态分解(Empirical Mode Decomposition, EMD) 概念解析 | 现象揭秘:经验模态分解的奥秘 Decomposing Signal Using Empirical Mode Decomposition — Algorith…

Spring MVC入门(4)

请求 获取Cookie/Session 获取Cookie 传统方式: RequestMapping("/m11")public String method11(HttpServletRequest request, HttpServletResponse response) {//获取所有Cookie信息Cookie[] cookies request.getCookies();//打印Cookie信息StringBuilder build…

Spring+thymeleaf完成用户管理页面的增删查改功能

目录 知识点&#xff1a; 路由重定向 redirect:/*** 登录 控制层代码 接口 sql配置 页面效果 添加用户 控制层代码 接口 sql配置 页面效果 查看信息 控制层代码 接口 sql配置 页面效果 修改信息 控制层代码 接口 sql配置 页面效果 条件查询 控制层代码 …

Vue3:用重定向方式,解决No match found for location with path “/“问题

一、情景说明 在初学Vue3的项目中&#xff0c;我们配置了路由后&#xff0c;页面会告警 如下图&#xff1a; 具体含义就是&#xff0c;没有配置"/"路径对应的路由组件 二、解决 关键配置&#xff1a;redirect const router createRouter({history:createWebHis…

「渗透笔记」致远OA A8 status.jsp 信息泄露POC批量验证

前言部分 在本节中&#xff0c;我会分两部分来说明致远OA A8 status.jsp 信息泄露的验证问题&#xff0c;其实就是两种验证方式吧&#xff0c;都一样&#xff0c;都是批量验证&#xff0c;主要如下所示&#xff1a; 通过Python脚本进行批量验证&#xff0c;但是前提是你可以收…

vue3+threejs新手从零开发卡牌游戏(九):添加抽卡逻辑和动效

首先优化下之前的代码&#xff0c;把game/deck/p1.vue中修改卡组方法和渲染卡组文字方法提到公共方法中&#xff0c;此时utils/common.ts完整代码如下&#xff1a; import { nextTick } from vue; import * as THREE from three; import * as TWEEN from tweenjs/tween.js impo…

哈希表(c++)

1、介绍 哈希表&#xff0c;也称为散列表&#xff0c;是一种非常高效的数据结构。它通过将键&#xff08;Key&#xff09;映射到数组的特定位置来快速查找、插入和删除数据。这个映射过程由哈希函数&#xff08;Hash Function&#xff09;完成&#xff0c;该函数将键转化为一个…