重要语法
-
/ 根节点选取
-
//当前目录下所有该节点
-
.当前节点
-
..当前节点的父节点
-
节点选择语法
-
/a/b[1], 选取a节点下的第一个b节点
-
/a/b[last()], 选取a节点下的最后一个b节点
-
/a/b[last()-1], 选取a节点下的倒数2个b节点
-
/a/b[position()<3], 选取a节点下的前2个b节点
-
//a[@b] 选取所有属性为b的a标签
-
//a[@b = “c”] 选取所有,值为c的属性b的a标签
-
/a/b[price>3.5] 选取a标签下的所有b标签,且价格为小于3.5
-
包含://div[contains(@class,"i")] 属性class包含有i的div
-
以什么开头: //div[start-with(@class,"i")] 属性class以i开头
-
以什么结尾: //div[end-with(@class,"i")] 属性class以i结尾
-
//div[@*="i"] 选取所有,值为i的任意属性的a标签
-
不包含://div[not(contains(@class,"i"))] 非属性class包含有i的div
-
-
轴
-
使用xpath取区间,一个取下,一个取上,然后取两者的交集
-
following-sibling 选取当前节点之后的所有同级节点 following 选取当前节点之后的所有节点
-
preceding-sibling 选取当前节点之前的所有同级节点 preceding 选取当前节点之前的所有节点
-
-
-
运算符
-
同一个网站,同一个子页面结构有很多不同的时候,可以通过or 来兼容,经验例子:百度百科。
-
-
text() 和 string()
-
string(.)获取当前标签及其子标签的文本,并将其拼接成一个字符串
-
-
etree.tostring(exactor_dd_list, encoding='utf-8',pretty_print=True, method='html').decode('utf-8') 转html源码
-
经验之谈:
可以通过对网页html字符串进行改动来适应xpath规则.