extract():序列化该节点为Unicode字符串并返回list。ide

>>> response.xpath('//div[@class="quote"]//small/text()').extract()
['Albert Einstein', 'J.K. Rowling', 'Albert Einstein', 'Jane Austen', 'Marilyn Monroe', 'Albert Einstein', 'André Gide', 'Thomas A. Edison', 'Eleanor Roosevelt', 'Steve Martin']

extract()[0] :取出list中的值。学习

>>> response.xpath('//div[@class="quote"][1]//small/text()').extract()[0]
'Albert Einstein'

2、xpath经过节点属性获取节点


div[@属性="属性值"]spa

//th[@class="common"]

xpath获取节点属性值插件

/@属性3d

//th/em/following-sibling::a[1]/@href   # 能够获得href属性的值 组成的selector list

3、xpath获取元素节点中的文本


xpath定位到的是节点自己,要想获取到节点中的文本,须要使用/text()code

代码以下:blog

//tbody[@id ="separatorline"]/following-sibling::tbody//th/em/following-sibling::a[1]/text()

4、xpath定位兄弟元素


例:定位51testing论坛里的帖子,不含上方广告类。字符串

查看代码,会发现每一个帖子由一个tbody组成,但tbody没有任何属性可使用,惟一一个id仍是动态的。尝试着找到了“版块主题”,发现有个可使用的id,和其他tbody属于兄弟节点。因而就可使用“版块主题”来定位它下面的全部tbody。xpth代码以下:table

//tbody[@id="separatorline"]/following-sibling::tbody

::   表示当前节点的父节点。

想要定位“版块主题”上方的tbody可使用:

//tbody[@id="separatorline"]/preceding-sibling::tbody

想要定位“版块主题”下方的第一个tbody可使用:

//tbody[@id="separatorline"]/following-sibling::tbody[1]

想要定位“版块主题”下方的第N个tbody可使用:

//tbody[@id="separatorline"]/following-sibling::tbody[N]

5、xpath运算符

运算符 描述 实例 返回值
| 计算两个节点集 //book | //cd 返回全部拥有 book 和 cd 元素的节点集
       
= 等于 price=9.80

若是 price 是 9.80,则返回 true。

若是 price 是 9.90,则返回 false。

!= 不等于 price!=9.80

若是 price 是 9.90,则返回 true。

若是 price 是 9.80,则返回 false。

< 小于 price<9.80

若是 price 是 9.00,则返回 true。

若是 price 是 9.90,则返回 false。

<= 小于或等于 price<=9.80

若是 price 是 9.00,则返回 true。

若是 price 是 9.90,则返回 false。

> 大于 price>9.80

若是 price 是 9.90,则返回 true。

若是 price 是 9.80,则返回 false。

>= 大于或等于 price>=9.80

若是 price 是 9.90,则返回 true。

若是 price 是 9.70,则返回 false。

or price=9.80 or price=9.70

若是 price 是 9.80,则返回 true。

若是 price 是 9.50,则返回 false。

and price>9.00 and price<9.90

若是 price 是 9.80,则返回 true。

若是 price 是 8.50,则返回 false。

       

 

最近有点小浮躁,静不下心来~~~

想要记录本身学习的每个过程,便于本身查阅,或许也能够帮助正迷惑的你。

最近推荐一个插件xpath helper,在使用xpath定位元素时十分的方便。