美文网首页
11 Xpath知识点整理

11 Xpath知识点整理

作者: 夏威夷的芒果 | 来源:发表于2018-12-04 16:38 被阅读17次

1. 单点.和 双点..的概念

.表示当前位置节点
.. 表示父级节点位置

2. /// 的概念

/ 表示子级范围
// 表示子孙后代范围

3. 属性检索

根据属性具体判断某一个标签,可以通过 标签名[属性值判断式]来定位,例 如:
.//div[@id="content"]
这段xpath的具体意思就是全局检索id等于contentdiv标签。
属性值可以为标签内的任何属性,例如divclassstylehref等,包括自定
义属性。

4. 包含检测

由于html是标记语言,所以他是没有报错机制以及严格的格式检测。但是 xpath有极其严格的语言和检测,所以xpath的书写通常需要包容html的不规则语言。
html标签的id属性具有唯一性,class具有通用性,而且空格是可以随意添加的。如果不能精确匹配到某一个具体的字符串,xpath可以采用包含检测的函数来指定大致的标签。
举例:
.//div[contains(@class,"content")]
如果idcontentdiv标签,content字符串前后有多个空格,且很不规则,这里可以使用contains函数对id属性的值检测,只要里面包含了content字符串, 就是我们需要的目标标签

5.

在爬虫的编写过程中,html都不会是特别简短的,而且大多特别的长,又乱。 class的通用性,导致一个contains检测会拿到非常多不需要的标签,所以常常 需要更严格的筛选操作。
xpath同样支持与或非的操作,通过 contains的组合使用,大部分的 需要都是可以实现的

逻辑
关键字 and or not()
示例 .//div[@id and @class] .//div[@id or @class] .//div[not(@id)]
示例解 同时拥有id和class属性的 有id或者class属性的 没有id属性的
div div div

6. 选取特定位置的标签

通过属性来选取标签,都是通配的标签,只要符合要求,就可以获取。当然还
有一种的话,就是一排标签,只有第几个或者某个范围的标签可用,这样的话
就需要指定位置或者对位置进行判断

1. 方式一:[1]通配标签返回的是一个列表,里面为空或者一些元素。xpath支持取具体值,

例如取列表的第一个元素,[1]就可以拿到;第二个值就是[2]注意列表的下角标从1开始,不像python那样从0开始

2. 方式二:position() position函数会返回当前的位置值,拿到值之后就可以对值进行判断选取。

举例:
.//div[position()>1]
选取当前位置下的所有div标签,然后去掉第一个,取出从2开始,一直到最后 一个div标签。

3. 方式三:last() 这个是最简单的,就是取列表的最后一个元素

举例:
.//div[last()]
简洁明了。

7. xpath的轴

其实这里有很多,xpath不仅仅只对html有效,还有xml。 但是在html中,一部分xpath轴是无效的,有一部分轴是非常有用的,这里列
举例:

  • following 选取文档中当前节点的结束标签之后的所有节点。
  • preceding 选取文档中当前节点的开始标签之前的所有节点。
  • ancestor 选取当前节点的所有先辈(父、祖父等)。
  • descendant 选取当前节点的所有后代元素(子、孙等)。
  • descendant-or-self 选取当前节点的所有后代元素(子、孙等)以及当前节点本身。

相关文章

网友评论

      本文标题:11 Xpath知识点整理

      本文链接:https://www.haomeiwen.com/subject/qofvcqtx.html