1、语法
表达式 | 语法 |
---|---|
nodename | 选取此节点的所有子节点 |
/ | 从根节点选取 |
// | 任意子孙节点,不考虑位置 |
. | 当前节点 |
. . | 当前节点的父节点 |
@ | 选取属性 |
* | 匹配任何节点 |
contains(@属性,”包含的内容”) | 模糊查询 |
text() | 取文本内容 |
2、使用案例
<bookstore>
<book>
<title class="tit alive" lang="eng">Harry Potter</title>
<price>29.99</price>
</book>
<book>
<title class="tit" lang="eng">Learning XML</title>
<price>39.95</price>
</book>
</bookstore>
表达式 | 结果 |
---|---|
/bookstore/book[1] | 选取属于 bookstore 子元素的第一个 book 元素。(xpath索引从1开始) |
/bookstore/book[last()] | 选取属于 bookstore 子元素的最后一个 book 元素。 |
/bookstore/book[position() < 3] | 选取最前面的两个属于 bookstore 元素的子元素的 book 元素。 |
//title[@lang] | 选取所有拥有名为 lang 的属性的 title 元素。 |
//title[@class=‘tit’] | 选取所有class属性值为tit的 title 元素,(第一个不会被选中,因为class值为“tit alive”) |
//title[contains(@class,“tit”)] | 选取class属性值包含“tit”的title元素,两个title都会被选中 |
/bookstore/book[price>35.00] | 选取 bookstore 元素下的所有 book 元素,且其中的 price 元素的值须大于 35.00。 |
//title/text() | 选取所有title元素的文本内容 |
//title/@lang | 选取所有title元素的lang属性 |
3、在python中使用xpath
# 1.导包
from lxml import etree as le
# 2.准备好str类型的文本对象
html = '......'
# 3.把str对象加载成xpath对象
html_x = le.HTML(html)
# 4.使用xpath表达式,ret的结果为列表
ret = html_x.xpath('xpath表达式')
版权声明:本文为weixin_41557802原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。