XPath语法简介

360 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第8天,点击查看活动详情

学习原因

前几天学习并且在项目里用python爬虫给数据库插入初始数据,需要查询返回网页里的标签,因此学习了一个和CSS选择器语法不一样的新的xml选择器——xPath。

xPath是啥

xpath可以使用路径表达式在XML上选取节点,从而达到确认元素的目的。

xPath语法

我们用html来举例。

表达式作用
nodename就是div等内容,标识标签名
/代表子节点,如果前面没有东西就从根结点开始选
//子孙结点,不需要是儿子
.当前结点
..上一级结点
@选取属性,类比CSS中div[class='xxx']
[n]选取第n个符合条件的结点

我们举个例子

//div[@class="d"][1]

意思是选取第1个class为d的div

注意中括号内部下标从1开始。

获取文本或属性

方法效果
/text()获取标签下直系的标签内容
//text()获取标签中所有的文本内容
string()获取标签中所有的文本内容
@t获取标签t属性的内容

如果仅仅爬虫获取数据的话,上文已经足够我们使用,不过xpath也提供了更丰富的操作。

通配符作用
*匹配任何元素节点。
@*匹配任何属性节点。
node()匹配任何类型的节点。
路径表达式结果
/bookstore/book[last()]选取属于 bookstore 子元素的最后一个 book 元素。
/bookstore/book[last()-1]选取属于 bookstore 子元素的倒数第二个 book 元素。
/bookstore/book[position()<3]选取最前面的两个属于 bookstore 元素的子元素的 book 元素。

xPath也提供了上百个函数供我们使用,一些常用的数学函数比如abs都可以直接使用。

chrome插件

image.png

为了方便爬取数据,我们可以使用XPath Helper直接在浏览器使用xPath语法匹配元素。 安装后在页面按shift+CTRL+x打开黑框

image.png

左侧书写xPath语法,右侧可以直接给出查询结果。 也可以按住shift移动鼠标到希望选区的标签上,就可以获取表达式。