[xpath python] 用法探索总结

总结PYTHON中不太好描述的xpath用法,不定时更新

  1. 情形1,<br>标签将一段文字隔开
    在这里插入图片描述如上图,我想分别提取演员信息(导演…)、影片类别(1993/…),则用xpath写成如下, 可以达到目的。
    div[@class='']/text()[1]对应演员信息
    div[@class='']/text()[2]对应影片类别
    总结:text()支持下标操作:/text()[1]

  2. 情形2,多个同级标签的选择
    在这里插入图片描述
    如上图,两个同级<p>标签,怎么指定某一个?其实与1同理,<p>标签的 选择也支持下标操作:
    div[@class='bd']/p[1]/text()[1]
    选择第一个<p>标签。

  3. xpath的方括号代表谓语,其中可以写成逻辑表达式.
    (标签的属性,实质上是位于标签的下一级别.如取出上图中的p标签的class属性,则使用/div/p/@class).
    基于上述知识,我们在方括号中写的表达式相当于对当前标签的下一级(是不是标签下多级不确定)进行操作.

  4. 选择具有 或者 不具有 某种特定子节点的节点.
    在这里插入图片描述
    比如在上图中,最外层的div标签下有p标签,h3标签,h4标签, 这三种标签中都有文字信息,但是某些p标签下有iframe元素(网页中的图表),这是我想剔除的标签.问如何选择以上三种标签并剔除带有iframe的p标签?

首先我们先选择div标签下的所有直接子节点//div[@id="webEditContent"]/*,但是iframe是位于div的子节点的子节点,也就是某些p标签的子节点,现在我们直接在上述表达式后加方括号进行谓语的编写就相当于对p标签的子节点进行操作.于是我们得到xpath://div[@id="webEditContent"]/*[not(iframe)]这样就剔除了有iframe子节点的p标签.

说的可能不是很明白,大家可以读一下这篇文章

https://www.w3school.com.cn/xpath/xpath_syntax.asp

  1. 刚才用到的知识点1:not(), 类似的谓语逻辑词还有and, contains(,), or, last(), position(), child()…等等
  2. 刚才用到的知识点2: 在div标签的方括号直接写标签名称p,表示选择有p子节点的div标签
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值