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 版权协议,转载请附上原文出处链接和本声明。
