xpath定位元素

xpath

xpath(query) 返回query表达式对应的所有节点的selector list。

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

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

xpath通过节点属性获取节点

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

//th[@class="common"]
xpath获取节点属性值

/@属性

//th/em/following-sibling::a[1]/@href   # 可以得到href属性的值 组成的selector list
xpath获取元素节点中的文本

xpath定位到的是节点本身,要想获取到节点中的文本,需要使用/text()


代码如下:

//tbody[@id ="separatorline"]/following-sibling::tbody//th/em/following-sibling::a[1]/text()
xpath定位兄弟元素

following-sibling   随后的兄弟元素

preceding-sibling  之前的兄弟元素

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

扫描二维码关注公众号,回复: 2162300 查看本文章



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

//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]
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定位元素时十分的方便。


猜你喜欢

转载自blog.csdn.net/loner_fang/article/details/81017202