show | version | enable_checker |
---|---|---|
step |
1.0 |
true |
- 上次深入了 xpath
- xpath 可以用来筛选 xml 文件中的节点
- xpath 有一套自己的语法
符号 | 作用 |
---|---|
. | 选取当前节点 |
/ | 从根节点选取 或 表示层级关系 |
nodename | 在当前位置选择此类节点 |
// | 在任意层级路径下 |
.. | 选取当前节点的父节点 |
@ | 选取属性 |
- 这个@选属性我们还没有试试
- 怎么用呢?🤔
- a 元素 有 href 属性
- 任意路径下a元素的
- href属性
- 遍历成功
- 如果不对a元素进行筛选呢?
- 任意路径下任意元素的
- href属性
- 目前可以筛选到属性
- 可以根据属性值筛选元素吗?
- 任意路径下的a元素
- 任意路径下有任意属性的a元素
- 任意路径下有href属性的a元素
- 任意路径下
- 有href属性值为http://nginx.org/的
- a元素
- 注意引用属性值单引号或者双引号都可以
- 任意层级下的
- 位置小于2的
- 有href的a元素
- 位置小于2的
- 可以成功得到元素
- 这里获取元素的方法叫什么呢?
- 我们针对一条条的都试试
- 这里面出现了索引运算符[]
- 找一下/html/body下
- 第 1 个 p
- /html/body/
- 最后一个p元素
- 在索引运算符中使用了 last()
- 此时last() = 3
- 倒数第二个p
- 关键还是对 li 使用索引运算符
- last()是最后一个
- last() - 1 是倒数第二个
- 前两个p
- p[position()<3]
- 可以找到前两项
- 如果我想找后两项呢?🤔
- p[position()>last()-2]
- 可以找到后两项
- 拥有href属性 的 a元素 🤪
- 可以试试href属性是特定值吗?
- href属性是 http://nginx.org 的a元素
- 这次深入了 xpath 的筛选
- 可以用中括号索引的方式对于子元素的位置进行筛选
- 第一个
- xpath("//p[1]")
- 最后一个
- xpath("//p[last()]")
- 正数前三个
- xpath("//p[position()<=3]")
- 倒数两个
- xpath("//p[position()>last()-2"])
- 第一个
- 可以在索引中对属性进行筛选
- @ 俗称花 a
- 对应@ttribute
- 可以找出有这个属性的元素
- et_html.xpath("//*[@href]")
- 也能找到属性是特定值的元素
- et_html.xpath("//*[@href=\"http://nginx.org/"]")
- 位置、属性筛选还可以配合节点筛选
- et_target = et_html.xpath("//a[last()][@href=\"http://nginx.org/"]")
- 可以用中括号索引的方式对于子元素的位置进行筛选
- 还有什么好玩的呢?🤔
- 下次再说