外观
XPath运算符
| 运算符 | 描述 | 示例 | 返回值 |
|---|---|---|---|
| | | 两个节点集并集 | xpath('//div|//a') | 返回所有的div元素节点和a节点 |
| +/-/*/div | 加减乘除 | xpath('//div[2-1]') | 返回所有div元素的第一个结果 |
| = | 等于 | xpath('//a[href="baidu.com"]') | 返回所有href值为baidu.com的a元素 |
| != | 不等于 | ||
| </<=/>/>= | 小于/小于等于/大于/大于等于 | xpath('//input[@value>2]') | 返回所有value属性大于2的input元素 |
| or/and | 或/并且 | xpath('//input[@value=1 or @value=2]') | 返回所有value属性等于1或2的input元素 |
| mod | 取余 |
练手:
from lxml import etree
html = """<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Xpath教程</title>
</head>
<body>
<ul>
<li><a href="www.likeinlove.com/index.html">出师未捷身先死,长使英雄泪满襟。</a></li>
<li><a href="www.likeinlove.com/home.html">风急天高猿啸哀,渚清沙白鸟飞回。</a></li>
<li>仲夏苦夜短,开轩纳微凉。</li>
<!-- 以上是杜甫部分名句-->
</ul>
<p id="4">万里悲秋常作客,百年多病独登台。</p>
<p id="5">清江一曲抱村流,长夏江村事事幽。</p>
<div>
<ul>
<li>满月飞明镜,归心折大刀。</li>
<li>射人先射马,擒贼先擒王。</li>
<li>留连戏蝶时时舞,自在娇莺恰恰啼。</li>
<li>正是江南好风景,落花时节又逢君。</li>
</ul>
</div>
</body>
</html>
"""
xp = etree.HTML(html)
print('获取标题内容',xp.xpath('//title/text()'))
print('获取页面语言',xp.xpath('//html/@lang'))
print('获取页面超链接',xp.xpath('//a/@href'))
print('获取id为4的诗句',xp.xpath('//p[@id=4]/text()'))获取标题内容 ['Xpath教程']
获取页面语言 ['en']
获取页面超链接 ['www.likeinlove.com/index.html', 'www.likeinlove.com/home.html']
获取id为4的诗句 ['万里悲秋常作客,百年多病独登台。']