一、xpath的基本语法


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

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

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

>>> 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'

二、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论坛里的帖子,不含上方广告类。

查看代码,会发现每个帖子由一个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定位元素时十分的方便。

使用xpath定位元素相关推荐

  1. xpath定位元素方法_测试数十次,总结了APP元素定位的万能方法

    定位不到元素时候,一定很头大,最近一直在跑自动化流程,经常因为各种原因定位不到元素,经过数十次的尝试,我发现尤其是H5页面,出现定位不到元素的可能性更大,也总结尝试发现了在H5里面,通过切换上下文后用 ...

  2. selenium自学笔记---ecshop购买脚本 xpath定位元素(下拉框,单选框)

    本机环境:xamppv3.2.1+ecshop3.0 1.元素定位写对,却一直报错,发现是页面元素加载的太慢,所以加上延时 from selenium import webdriverimport t ...

  3. python xpath定位元素方法_Python爬虫杂记 - Xpath高级用法

    xpath 高级用法 1. 匹配当前节点下的所有: .// . 表示当前 // 表示当前标签下的所有标签 注: 要配合使用 2. 匹配某标签的属性值: /@属性名称 这里以input里的value值为 ...

  4. 使用xpath定位元素,报Message: invalid argument: invalid locator

    在用selenium进行Web UI自动化过程中,通过把yaml封装来进行数据传参,使用xpath方法进行元素定位时,报错:selenium.common.exceptions.InvalidArgu ...

  5. Selenium使用xpath定位元素

    参考资料: [web自动化测试]xpath元素定位 核心用法 接下来是使用 xpath 必须掌握的核心知识点,只要掌握好这些知识点,基本上能定义到想要的元素. //input[@name='accou ...

  6. python xpath定位元素方法_二、appium+python xpath、android_uiautomator定位元素的方法

    1.继承webdriver的几个常见的定位方法 a.find_element_by_id("id") b.find_element_by_name() #text值,appium ...

  7. Chrome如何使用xpath定位元素

    打开扩展程序 打开chrome的配置页面 - 如下图 点击右上方的配置 - 工具 - 扩展程序 xPath helper是一款Chrome浏览器的开发者插件,安装了xPath helper后就能轻松获 ...

  8. python xpath定位元素方法_python--通过xpath相对节点位置查找元素(续)

    之前写过相对父元素及下一个兄弟元素的方法. 这次补充一下xpath相对节点位置查找元素的所有方法.例子就不举了,自己可以去练练. xpath相对节点查找方法: 1.xpath('./ancestor: ...

  9. xpath定位元素详解

    目录 一.使用标签+元素属性定位 二.使用文本内容匹配 三.其他定位方式 一.使用标签+元素属性定位 目标:定位到下图中第三个徽章元素 以上图标签为例 定位id='asideProfile'的标签 / ...

最新文章

  1. RXJAVA之变换操作
  2. golang 映射 map 简介
  3. NetBeans工具学习之道:NetBeans的(默认)快捷键
  4. python3安装scrapy及使用方法(爬虫框架)
  5. Javascript模块化编程系列二: 模块化的标准化(CommonJS AMD)
  6. PHP100个知识点之2 日期时间(一)
  7. C++笔记------static 和 const 在类中用法
  8. matlab车流量检测,求解释代码,一段交通车流量检测的代码
  9. Ansys workbench有限元分析学习软件下载
  10. 【0709作业】简易的购房商贷月供计算器
  11. UE4 虚幻引擎,光照系统。BP_Sky_Sphere 白天黑夜效果
  12. java 整型数组定义_JAVA数组的定义及用法
  13. Presto架构和使用总结
  14. UHL IOL NVMe测试工具安装及使用的常见问题
  15. Kotlin Sealed 是什么?为什么 Google 都用
  16. Tomcat无法启动,报错java.lang.NoClassDefFoundError: or...
  17. 白领加薪升迁九大高招
  18. lerna管理多项目
  19. 小学计算机课教学设计加教学反思,小学信息技术优秀教学反思
  20. 信息系统项目管理师(2022年)—— 重点内容:10大管理、5大过程组、47个过程信息汇总

热门文章

  1. JqGrid之指定单元格可编辑-yellowcong
  2. Matplotlib imshow()函数用法总结
  3. mysql空闲等待时间导致的问题的解决方案
  4. 【每日最爱一句】2013.06.18
  5. 怎样在线做动图?一招教你快速完成gif动画制作
  6. CSDN如何查找用户/搜索用户/关注用户
  7. 不定时搞事情篇 No.1 神途BOSS时间记录器
  8. 设计神器,有了这些配色网站,你的作品会高人一等
  9. openCV2——ostu
  10. 用firefox参与freenode的IRC