python爬虫笔记02–xpath

  • Post author:
  • Post category:python





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