python爬虫05-xpath解析(一)

news/2025/1/3 6:41:20/

目录

总结:

1、xpath简介和安装

2、使用xpath :   导包--->转换--->解析

3、语法规则 

4、示例

总结:

xpath是简单粗暴的

就几个符号(..表示向上,/表示向下,@是属性,[ ]是条件)。

1、xpath简介和安装

  • XPath 是一门在 XML 文档中查找信息的语言;
  • 俗讲: 在树中通过节点等条件快速查找元素!
  • 安装lxml : pip install lxml 

2、使用xpath :   导包--->转换--->解析

  1. 导包:           from lxml import etree
  2. 文本转为树:tree=etree.HTML(服务器响应text)   /  tree = etree.parse(本地html)   
  3. 解析:           tree.xpath(表达式)

3、语法规则 

表达式作用示例说明
/绝对定位:从根节点开始查询/html/body/div[1]
//相对定位:任意节点查询匹配/html//div[1]
./选取当前节点
../选取当前节点的父节点。
@选取属性   //标签名[@元素名称='元素值']
 //input[@id='kw']
[ ]条件定位

//div[ @id = 'id_name' ] 

//div[ 1 ]    索引查询

/text()获取标签下直系的标签文本//span/text()
last()定位到最后一个//标签名[last()]
//span/ul//li[last()]
逻辑表达 and 标签名[@元素名称='元素值' and @元素名称='元素值']
//input[@id='kw' and @class='s_ipt']
逻辑表达 or // 标签名[@元素名称='元素值' or @元素名称='元素值']
//input[@id='kw' or @class='s_t']
逻辑表达 非//标签名称[@元素名称 != '元素值']
//input[@class!='1111']
逻辑表达 not()//标签名[not(.='元素值')         . 代表的是 text()
//year[not(.='aaa')]
//li[not(@id="model")] 
模糊匹配//标签名[contains(text(), "内容"]   
//div[contains(text(), "aaa")]
精确匹配//标签名[(text()='内容')]
//div[(text()='呵呵')]

4、示例:

解析a.html文本:

<!DOCTYPE html>
<head><meta charset="UTF-8"/>    <title>标题</title>
</head>
<body>
<div><ul><li id="name" class="bookName"><span>java</span></li><li id="model"><span>python</span></li><li class="price"><span>js</span></li><li class="author"><span>c</span></li></ul>
</div>
</body>
</html>

需求:获取span标签中的文本:

# author: keep_di  
# 01-xpathtest.py
from lxml import etree
tree = etree.parse('a.html') #读取的本地文件
#需求:获取li中的文本 
lst1 = tree.xpath('//span/text()') # xpath返回是列表
print(lst1)  # ['java', 'python', 'js', 'c']

http://www.ppmy.cn/news/1323399.html

相关文章

JavaScript类型检测【全】

类型检测的方法&#xff1a; typeofinstanceofObject.prototype.toStringconstructor typeof typeof 操作符返回一个字符串&#xff0c;表示未经计算的操作数的类型。 typeof undefined; // "undefined"typeof null; // "object"typeof 100; // "…

C语言天花板——指针(经典题目)

指针我们已经学习的差不多了&#xff0c;今天我来给大家分享几个经典的题目&#xff0c;来让我们相互学习&#x1f3ce;️&#x1f3ce;️&#x1f3ce;️ int main() {int a[4] { 1, 2, 3, 4 };int* ptr1 (int*)(&a 1);int* ptr2 (int*)((int)a 1);printf("%x,%…

安全帽/反光衣检测AI边缘计算智能分析网关V4如何修改IP地址?

智能分析网关V4是TSINGSEE青犀推出的一款AI边缘计算智能硬件&#xff0c;硬件采用BM1684芯片&#xff0c;集成高性能8核ARM A53&#xff0c;主频高达2.3GHz&#xff0c;INT8峰值算力高达17.6Tops&#xff0c;FB32高精度算力达到2.2T&#xff0c;硬件内置了近40种AI算法模型&…

【数据结构】哈希表详解,举例说明 java中的 HashMap、HashTable及其区别

一、哈希表&#xff08;Hash Table&#xff09;简介&#xff1a; 哈希表是一种数据结构&#xff0c;用于实现字典或映射等抽象数据类型。它通过把关键字映射到表中的一个位置来实现快速的数据检索。哈希表的基本思想是利用哈希函数将关键字映射到数组的索引位置上&#xff0c;…

PHP AES加密:保护数据安全的高级加密技术

PHP AES加密&#xff1a;保护数据安全的高级加密技术 ASE&#xff08;Advanced Encryption Standard&#xff09;是一种对称加密算法&#xff0c;也被称为Rijndael加密算法。它是由比利时密码学家Joan Daemen和Vincent Rijmen设计的&#xff0c;于2001年被美国国家标准与技术研…

深度系统QT 环境搭建

1.QT安装 不折腾最新版直接去商店搜索QT安装。 2.修改su密码&#xff0c;安装需要权限 打开一个终端&#xff0c;然后输入下面的命令&#xff1a;按照提示输入密码按回车就行。 sudo passwd 回车后会出现让你输入现在这个账户的密码&#xff1a; 3.编译环境安装。 安…

GPT实战系列-简单聊聊LangChain搭建本地知识库准备

GPT实战系列-简单聊聊LangChain搭建本地知识库准备 LangChain 是一个开发由语言模型驱动的应用程序的框架&#xff0c;除了和应用程序通过 API 调用&#xff0c; 还会&#xff1a; 数据感知 : 将语言模型连接到其他数据源 具有代理性质 : 允许语言模型与其环境交互 LLM大模型…

学习JavaEE的日子 day13 封装 static private this 类加载机制

Day13 1. private – 私有化 理解&#xff1a;private是访问修饰符的一种&#xff0c;访问修饰符规定了访问权限. 作用&#xff1a; ​ 1.private修饰属性&#xff1a;该属性只能在类的内部使用 ​ 2.private修饰方法&#xff1a;该方法只能在类的内部使用 应用场景&#xff1…