python xpath使用

xpath

xpath介绍

  • 概念 —— 一种XML查询语言,在XML文档中通过元素和属性进行导航
    • XML概念 —— 一种标记语法的文本格式
  • lxml模块 —— 包含将html文本转成xml对象,和对对象执行xpath功能

xml文档节点

<bookstore>
	<book>
		<title lang='eng'>Harry Potter</title>
		<author>JK.Rowing</author>
		<year>2005</year>
		<price>29</price>
	</book>
</bookstore>
  • 文档节点 —— <bookstore>
  • 元素节点 —— <title>、<author>、<year>、<price>
  • 属性节点 —— lang=‘eng’
  • book节点是title、author、year、price的父节点
  • title、author、year、price节点是book的子节点
  • title、author、year、price节点是同胞

xpath工具

  • chrome内核使用xpath help工具
  • firefox内核使用xpath checker

xpath工具的使用

表达式含义
/从根节点选取
//从匹配选择的当前节点选择文档中的节点,而不考虑他们的位置(搜索全部)
.选取当前节点
. .选取当前节点的父节点
@选取属性
text()获取文本内容
  • []字符 —— 用来查找某个特定的节点或包含某个特定值的节点
表达式结果
/bookstore/book[x]选取属于bookstore子元素的第x个book元素
/bookstore/book[last()]选取属于bookstore子元素的最后一个book元素
/bookstore/book[last()-x]选取属于bookstore子元素的倒数第x+1个book元素
/bookstore/book[position()<x]选取属于bookstore子元素的最前面x-1个book元素
//title[@lang]选取所有title元素中拥有名为lang的属性的值
//title[@lang=‘eng’]选取所有title元素中拥有值为eng的lang属性
/bookstore/book[price>35]选取bookstore元素里所有price元素值大于35的book元素

lxml模块

  • 简介 —— 一个HTML/XML的解析器,主要功能是解析和提取HTML/XML内容,需使用lxml模块内的etree模块

  • 模块导入(etree):
    from lxml import etree

使用方法

  • etree模块只能操作Element对象

    • 字符串转换为Element对象方法:
      etree.HTML(str)
  • xpath表达式使用

    • Element对象.xpath(‘xpath表达式’)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值