XPath常见用法示例,XPath基础语法

XPath常见用法示例,XPath基础语法

  • XPath常见用法示例
  • XPath基础语法
    • 1 节点选择路径
    • 2 节点类型选择
    • 3 选择元素的属性
    • 4 使用索引选择节点
    • 5 使用文本选择节点
    • 6 逻辑运算符
    • 7 常用函数

XPath(XML Path Language)是一种用于在XML文档中查找信息的语言,广泛应用于HTML解析、网页抓取、Web自动化测试等领域。本文将详细介绍XPath的基本语法,并提供常见用法示例,帮助您更好地理解和使用XPath。

XPath常见用法示例

在这部分,我们通过表格的形式展示常见的XPath查询方式,并附上相应的样例。表格包括XPath表达式、用法和应用场景。

XPath表达式 用法描述 示例HTML 结果示例
//* 选择所有节点
Test
选择htmlbodydiv等所有节点
//div 选择所有div元素

Text

选择所有的div元素
//div[@class='container'] 选择classcontainerdiv元素

Text

选择class="container"div元素
//a[contains(@href, 'example')] 选择href属性中包含examplea标签 Link 选择href包含examplea标签
//h1[text()='Hello World'] 选择文本为Hello Worldh1标签

Hello World

选择文本内容为“Hello World”的h1标签
//a[@href='https://example.com'] 选择hrefhttps://example.coma标签 Example 选择hrefhttps://example.coma标签
//div/p 选择div标签下的所有p标签

First

Second

选择div标签下的所有p标签
//div[1] 选择第一个div元素

First

Second

选择第一个div元素(包含First文本的div
//div[last()] 选择最后一个div元素

First

Second

选择最后一个div元素(包含Second文本的div
//a[starts-with(@href, 'https')] 选择hrefhttps开头的a标签 Example 选择hrefhttps开头的a标签
//ul/li[position()=2] 选择ul中的第二个li元素
  • Item 1
  • Item 2
  • Item 3
选择第二个li元素(Item 2

XPath基础语法

XPath的语法结构基于路径表达式,通过路径选择节点。以下是XPath常用语法和操作符。

1 节点选择路径

XPath通过路径表示文档结构,节点选择路径分为两类:

  • 绝对路径:从文档的根节点开始选择路径,路径以斜杠 / 开头。例如:/html/body/div,表示从根节点开始查找html,然后是body,再到div

  • 相对路径:从当前节点开始选择路径,路径不以斜杠 / 开头。例如:body/div,表示从当前节点选择body中的div

2 节点类型选择

  • 通配符 *:选择当前节点的所有子节点。例如:/html/body/*,表示选择body节点下的所有直接子节点。

  • 节点名称:选择特定名称的节点。例如:/html/body/div,表示选择body下的所有div节点。

3 选择元素的属性

  • @符号:用来选择元素的属性。选择某个属性值时,需要在属性名前加@符号。例如://div[@id='main'],表示选择idmaindiv节点。

  • 多条件属性选择:可以通过多个属性值来选择节点。例如://a[@href='https://example.com' and @target='_blank'],表示选择hrefhttps://example.comtarget_blanka节点。

4 使用索引选择节点

  • 节点索引:通过索引选择第几个节点,索引从1开始。例如://div[1],表示选择第一个div节点。

  • 范围选择:选择节点的某一范围。例如://div[position() <= 3],表示选择前3个div节点。

  • 最后一个节点:选择最后一个节点。例如://div[last()],表示选择div标签中的最后一个节点。

5 使用文本选择节点

  • 选择指定文本:使用text()函数来查找具有特定文本的节点。例如://div[text()='Hello'],表示选择文本内容为“Hello”的div节点。

  • 包含某个子字符串:使用contains()函数查找属性值中包含某个子字符串的节点。例如://a[contains(@href, 'example')],表示选择href属性中包含examplea节点。

6 逻辑运算符

XPath支持常见的逻辑运算符进行多条件查询:

  • and:逻辑与,表示两个条件都为真。例如://a[@href='https://example.com' and @target='_blank']

  • or:逻辑或,表示至少有一个条件为真。例如://a[@href='https://example.com' or @href='https://example2.com']

7 常用函数

XPath还提供了丰富的函数,可以增强查询的能力:

  • contains():检查属性值中是否包含某个子串。例如://div[contains(@class, 'active')],表示选择class属性包含activediv

  • starts-with():检查属性值是否以某个子串开头。例如://a[starts-with(@href, 'https://')],表示选择href属性以https://开头的a标签。

  • text():选择文本节点。例如://p[text()='Welcome'],表示选择文本内容为“Welcome”的p标签。

  • position():获取当前节点的位置。例如://ul/li[position()=1],表示选择第一个li节点。

你可能感兴趣的:(#,爬虫,python,XPath,爬虫,网络爬虫)