选项卡切换和xpath
解析
选项卡切换
浏览器对象.window_handles
- 获取当前浏览器中所有的窗口对象,返回一个列表;
浏览器对象.switch_to.window(窗口对象)
- 切换选项卡
# 切换到最后一个选项卡
b.switch_to.window(b.window_handles[-1])
# 切换到第一个选项卡
b.switch_to.window(b.window_handles[0])
xpath
解析
python基于和xpath
做数据解析需要使用的库是lxml
。
1.lxml
第三方库
1)作用:lxml
可以解析xml
内容也可以解析html
内容。
2)xpath
相关术语
树 - 这个网页或者xml
文件对应的结构;
节点 - 标签、元素
根节点 - 最外层的标签
绝对路径 - 从根节点开始写的路径
相对路径 - 用.表示当前节点,用…表示父节点
节点内容 - 双标签的标签内容
属性 - 标签属性
2.xml
数据结构
xml
数据和json
数据一样,是一种通用的数据格式。
3.xpath
语法 - 获取标签
1)创建数并且获取根节点
etree.XML(xml数据)
创建xml
树结构并且返回根节点;
etree.HTML(html数据)
创建html
树结构并且返回根节点。
2)通过路径获取标签
节点对象.xpath(路径)
返回值是列表,列表中的元素是通过指定路径找到的所有标签对应的节点对象。
a.绝对路径:/绝对路径,绝对路径一定是从根节点开始往下写,和xpath
前面是哪个节点无关;
b.相对路径:用 .
表示当前节点,xpath
前面是哪个节点,当前节点就是谁;用 ..
表示当前节点的父节点;
c.任意路径://路径
3)获取标签内容
获取标签的路径/text()
在路径后面加/text()
4)获取标签属性值
获取标签的路径/@属性名
在路径后面加/@属性名
5)谓语 - 条件
a.位置相关条件
标签名[N]
- 第N个指定标签;
标签名[last()]
- 最后一个指定标签;
标签名[last()-N]
- 倒数第(N+1)个指定标签;
标签名[postion()<N]
- 获取所有位置值(从1开始)小于N的标签;
标签名[postion()>N]
- 获取所有位置值(从1开始)大于N的标签;
标签名[postion()<=N]
- 获取所有位置值(从1开始)小于等于N的标签;
标签名[postion()>=N]
- 获取所有位置值(从1开始)大于等于N的标签;
b.和属性相关的条件
标签名[@属性名] - 获取拥有指定属性的指定标签
标签名[@属性名] - 获取指定属性为指定值的指定标签
c.和标签内容相关的条件
用子标签的标签内容对父标签进行筛选,通过标签中子标签的内容来对标签进行筛选
标签对象[子标签名>数据]
标签对象[子标签名<数据]
标签对象[子标签名>=数据]
标签对象[子标签名<=数据]
标签对象[子标签名=数据]
6)通配符
*
用*
代替任何标签或者任何属性