首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >30个示例手把手教你学会Xpath高级用法

30个示例手把手教你学会Xpath高级用法

作者头像
小小科
发布于 2018-05-03 16:06:51
发布于 2018-05-03 16:06:51
2.3K0
举报
文章被收录于专栏:北京马哥教育北京马哥教育

xpath速度比较快,是爬虫在网页定位中的较优选择,但是很多网页前端代码混乱难以定位,而学习定位也较为不易(主要是全面的教程较少),这里列出一点编程过程中可能有用的东西,欢迎共同学习批评指正。

试验环境:Python环境,lxml.etree

  • 试验所使用的html代码

1、匹配某节点下的所有.//

//获取文档中所有匹配的节点,.获取当前节点,有的时候我们需要获取当前节点下的所有节点,.//一定要结合.使用//,否则都会获取整个文档的匹配结果.

2、匹配包含某属性的所有的属性值//@lang

3、选取若干路径|

这个符号用于在一个xpath中写多个表达式用,用|分开,每个表达式互不干扰

4、 Axes(轴)

  • child:选取当前节点的所有子元素
  • attribute:选取当前节点的所有属性
  • ancestor:父辈元素 / ancestor-or-self:父辈元素及当前元素
  • descendant:后代 / descendant-or-self:后代及当前节点本身

使用方法同上

  • following :选取文档中当前节点的结束标签之后的所有节点
  • namespace:选取当前节点的所有命名空间节点
  • parent:选取当前节点的父节点
  • preceding:选取文档中当前节点的开始标签之前的所有节点
  • preceding-sibling:选取当前节点之前的所有同级节点
  • self:选取当前节点
  • 组合拳

5、position定位

6、条件

7、函数

  • count:统计
  • concat:字符串连接
  • string:解析当前节点下的字符
  • local-name:解析节点名称
  • contains(string1,string2):如果 string1 包含 string2,则返回 true,否则返回 false
  • not:布尔值(否)
  • string-length:返回指定字符串的长度
  • 组合拳2
  • or:多条件匹配
  • 组合拳3:floor + div除法 + ceiling
  • 组合拳4隔行定位:position+mod取余
  • starts-with:以。。开始

8、数值比较

  • <:小于
  • div:对某两个节点的属性值做除法
  • 组合拳4:根据节点下的某一节点数量定位

9、将对象还原为字符串

以上就是目前我整理出的全部内容,说明一点,xpath虽快,但是使用时尽量使用简洁高效的方式,本文旨在定位那些较难的地方使用,刻意追求晦涩难懂的技巧会影响其效率,并不可取。

如有错误请评论指出,如有更强大好玩儿的也可以贴出来大家共同学习。 最后修改日期:2017/11/23

作者:whaike

来源:http://www.jianshu.com/p/1575db75670f


本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-12-20,如有侵权请联系 cloudcommunity@tencent.com 删除
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档