概述
简介
XPath 是一门在XML文档中查找信息的语言。XPath 可用来在XML文档中对元素和属性进行遍历
XPath 是W3C XSLT 标准的主要元素,并且XQuery和XPointer都构建于 XPath 表达之上
文档地址
浏览器中XPath工具的使用
浏览器-元素-Ctrl+F
匹配规则
路径表达式
| 选取若干个路径,如:xpath('//div|//table') 获取所有的div与table节点
标签名字 选取此节点的所有子节点
/ 根节点【也可以代表包含,如div/a表示div中的a】
// 任意节点
. 当前节点
.. 当前节点的父节点
@ 选取属性
通配符
* 匹配任意元素节点
@ 匹配属性节点,如@class="main"
选择XML文件中节点
text() (文本节点)
element(元素节点)
attribute(属性节点)
concat(元素节点,元素节点)
comment (注释节点)
root (根节点)
谓语
谓语被嵌在方括号内,用来查找某个特定的节点或包含某个制定的值的节点
xpath('/body/div[1]') 选取body下的第一个div节点
xpath('/body/div[last()]') 选取body下最后一个div节点
xpath('/body/div[last()-1]') 选取body下倒数第二个节点
xpath('/body/div[positon()<3]') 选取body下前两个div节点
xpath('/body/div[@class]') 选取body下带有class属性的div节点
xpath('/body/div[@class="main"]') 选取body下class属性为main的div节点
xpath('/body/div[price>35.00]') 选取body下price元素大于35的div节点
运算符
+ 加法 6 + 4 10
– 减法 6 – 4 2
* 乘法 6 * 4 24
div 除法 8 div 4 2
= 等于 price=9.80 如果 price 是 9.80,则返回 true。如果 price 是 9.90,则返回 false。
!= 不等于 price!=9.80 如果 price 是 9.90,则返回 true。如果 price 是 9.80,则返回 false。
< 小于 price<9.80 如果 price 是 9.00,则返回 true。如果 price 是 9.90,则返回 false。
<= 小于或等于 price<=9.80 如果 price 是 9.00,则返回 true。如果 price 是 9.90,则返回 false。
> 大于 price>9.80 如果 price 是 9.90,则返回 true。如果 price 是 9.80,则返回 false。
>= 大于或等于 price>=9.80 如果 price 是 9.90,则返回 true。如果 price 是 9.70,则返回 false。
or 或 price=9.80 or price=9.70 如果 price 是 9.80,则返回 true。如果 price 是 9.50,则返回 false。
and 与 price>9.00 and price<9.90 如果 price 是 9.80,则返回 true。如果 price 是 8.50,则返回 false。
mod 计算除法的余数 5 mod 2 1
python中使用
安装
pip install lxml
使用
from lxml import etree
e = etree.HTML(resp.read())
website_urls = e.xpath('//div[@class="tag-box l"]/a/@href') # 解析href属性值