xPath
- 一种HTML和XML的查询语言,能在XML和HTML的树状结构中寻找节点
- 安装 pip install lxml
xPath的使用
获取文本
//标签1[@属性1="属性值1"]/标签2[@属性2="属性值2"]/..../text()
获取属性值
//标签1[@属性1="属性值1"]/标签2[@属性2="属性值2"]/..../@属性n
以下为范本html文件:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>XPATH测试</title>
<link rel="stylesheet" href="">
</head>
<body>
<h3>标题</h3>
<ul>
<li>内容1</li>
<li>内容2</li>
<li class="important">内容3演示用</li>
<li>内容4</li>
<li>内容5</li>
</ul>
<div>
内容待输入
</div>
<p>
段落内容 在p中
</p>
<div id="container">
段落文字
<a href="http://www.baidu.com" title="超链接">跳转到百度</a>
<p class="content">
区块内容1
</p>
<p class="content">
区块内容2
</p>
<p class="content">
区块内容3
</p>
<p class="content">
区块内容4
</p>
<p class="content-block">
区块内容5 content-block 中
</p>
<p class="block-content">
区块内容6 末尾内容
</p>
</div>
<p>
末尾文字
</p>
</body>
</html>
解析实例:接下来将使用python对其进行演示,
# 读取文件中的内容
f = open('./files/index.html', 'r', encoding='utf-8')
s = f.read()
selector = html.fromstring(s)
将上面的HTML代码以index.html的文件保存到项目目录中files文件夹中。
在方法中读取文件内容到selector
# 解析H3的标题
h3 = selector.xpath('/html/body/h3/text()')
print(h3[0])
接下来通过xpath中获取文本的方法,获取h3的标题
打印如下:
# 解析ul里的内容
# ul = selector.xpath('/html/body/ul/li')
ul = selector.xpath('//ul/li')
print(len(ul))
for li in ul:
print(li.xpath('text()')[0])
接下来再试着解析ul中的内容
首先打印长度,再循环打印每一个li中的内容:
打印结果如下:
# 解析ul中的important元素值
ul2 = selector.xpath('/html/body/ul/li[@class="important"]/text()')
print(ul2)
让xPath寻找ul下li中class为'imporant'的文本,代码打印如下:
解析a标签的内容
a = selector.xpath('//div[@id="container"]/a/text()')
标签内的内容
print(a[0])
href属性
alink = selector.xpath('//div[@id="container"]/a/@href')
print(alink[0])
打印结果:
解析P标签
p = selector.xpath('/html/body/p[last()]/text()')
print((f'p len: {len(p)}') )
print((f'p[0]: {p[0]}') )
打印如下:
获取ul下li的第三个成员的文本:
test = selector.xpath('/html/body/ul/li[3]/text()')
print(test[0])
打印:
感谢看到这里,如果有帮助的话欢迎点个赞!谢谢各位