Xpath学习

在利用爬虫爬取数据时,为了更快更高效的解析html中数据,我们来学习Xpath,我们可以姑且将它理解为在html中查找信息的语言

1.节点

简单来说,一个标签,属性都是一个节点,我们一般上只说标签为节点,eg:获取div元素,我们说获取到div节点

其实Xpath的核心就是通过各种语法准确的选取多个和单个节点,从而获取想要的数据

另外,整个html文档开始的节点是

节点之间的关系

Parent  父节点    亲生父亲
Children  子节点   亲生儿子,不包
Sibling  兄弟节点   共有同一个父节点
Ancestor  父辈节点   父亲,爷爷,爷爷的父亲 
Descendant  后代节点   儿子,孙子,曾孙子

2.语法

Xpath规则:
	语段越好,越精简越好
	分步操作,不要想一步到位
	分块取值
	
.		表示当前
..		表示上一级
/		表示下一级,后边必须跟其他语法
//		表示所有后代

属性写在[]中是查找节点,直接写拿属性   
eg:./div/div[@class="a"] 获取根目录下的div的子级类名为a的div
	./div/div/@class  获取根目录下的div的子级div的类名

@ 		选取属性
[a]		a是一个数字,代表第几
*   子级所有标签

contains(属性,值)    #查找包含属性包含某个值的节点
position()   #定位   eg:position()>1 定位第一个节点之后的节点
last()   取末位置的节点
and  与		and + 语句
or   或		or + 语句
not  非      not(语句)
and or not 最好不要连用

ancestor   #获取当前阶段的父辈(父,爷..)(向上的全局检索)
#eg:/ancestor::*   检索所有父辈元素
ancestor-or-self  #获取当前节点的父辈(父,爷..),包括自己
attribute   #获取当前节点的所有属性值
child  #获取当前节点的所有子元素
parent #获取当前节点的父节点
descendant  #获取当前节点的所有后代元素
descendant-or-self   #获取当前节点的所有后代元素(包括自身)
following #获取当前节点之后的所有节点
preceding  #获取当前节点之前的所有节点
preceding-sibling  #获取当前节点之前的所有同级节点
namespace  #获取当前节点的所有命名空间
self  #获取当前节点