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'
div[@属性="属性值"]spa
//th[@class="common"]
xpath获取节点属性值插件
/@属性3d
//th/em/following-sibling::a[1]/@href # 能够获得href属性的值 组成的selector list
xpath定位到的是节点自己,要想获取到节点中的文本,须要使用/text()code
代码以下:blog
//tbody[@id ="separatorline"]/following-sibling::tbody//th/em/following-sibling::a[1]/text()
例:定位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]
运算符 | 描述 | 实例 | 返回值 |
---|---|---|---|
| | 计算两个节点集 | //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定位元素时十分的方便。