Xpath语法格式总结
Xpath(XML Path Language)是一门用于在XML文档中定位节点的语言,也被用于HTML文档中的Web页面抓取。下面详细讲解Xpath语法的使用格式。
基本语法
Xpath中主要有两种路径表达式:绝对路径和相对路径。
绝对路径
绝对路径由根节点开始,通过逐级指定节点的名称来描述节点的路径,以下为绝对路径的格式:
/parent/child[@attribute='value']
其中:
/
表示从根节点开始;parent
表示上一级节点的名称;child
表示当前节点的名称;[@attribute='value']
表示选取具有指定属性值的当前节点。
相对路径
相对路径则是从当前节点开始,通过指定节点名称或通配符等方式来描述节点的路径,以下为相对路径的格式:
./child /ancestor::parent
其中:
./
表示从当前节点开始;child
表示当前节点的子节点名称;/
表示选择下一级的节点;ancestor::
表示选取当前节点的祖先节点;parent
表示选取上一级节点的名称。
谓语表达式
除了上述基本语法,Xpath还包含谓语表达式,可以根据节点的属性或索引值进行选择。以下为谓语表达式的使用格式:
//node[@attr='value'][index]
其中:
//
表示选取节点,可以跨越多个层级;node
表示当前节点的名称;[@attr='value']
表示选取具有指定属性值的当前节点;[index]
表示选取匹配的元素中的第index个元素,index从1开始。
示例1
以以下XML数据为例:
<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
<book category="children">
<title lang="en">Harry Potter</title>
<author>J.K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
<book category="cooking">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
</bookstore>
想要选取所有书籍的价格(price)信息,可以使用以下Xpath表达式:
//book/price
其中 //
表示选取节点,可以跨越多个层级; book
表示当前节点的名称; /
表示选择下一级的节点; price
表示选取当前节点的子节点并指定为price。
示例2
以以下HTML数据为例:
<!DOCTYPE html>
<html>
<head>
<title>Xpath Demo Page</title>
</head>
<body>
<div class="content">
<h1>Welcome to Xpath Demo Page</h1>
<ul>
<li><a href="https://www.baidu.com">Baidu</a></li>
<li><a href="https://www.google.com">Google</a></li>
<li><a href="https://www.microsoft.com">Microsoft</a></li>
</ul>
</div>
</body>
</html>
想要选取所有<a>
标签的href
属性,可以使用以下Xpath表达式:
//a/@href
其中 //
表示选取节点,可以跨越多个层级; a
表示当前节点的名称; /@href
表示选取具有href
属性的当前节点。
总结
Xpath是定位HTML和XML文档中节点的一种特殊查询语言,能够极大地帮助我们进行Web页面的数据抓取。为了有效地使用Xpath语法格式,需要熟悉基本语法和谓语表达式。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Xpath语法格式总结 - Python技术站