XPath常用定位节点元素语句总结的完整攻略
XPath是一种用于在XML和HTML文档中定位节点的语言。在Web开发中,XPath常用于爬虫、自动化测试等场景。本文将详细讲解XPath常用定位节点元素语句的完整攻略,包括基本概念、语法规则、常用函数和两个示例说明。
基本概念
在XPath中,节点是文档中的基本元素。节点可以是元素、属性、文本、注释等。XPath使用路径表达式来定位节点,路径表达式由一系列的轴和节点测试组成。
语法规则
XPath的语法规则如下:
- 路径表达式由一系列的轴和节点测试组成。
- 轴指定节点的相对位置,例如子节点、父节点、兄弟节点等。
- 节点测试用于匹配节点,例如元素、属性、文本等。
- 路径表达式可以使用运算符、函数和变量。
以下是XPath常用的轴和节点测试:
- 轴:ancestor、ancestor-or-self、child、descendant、descendant-or-self、following、following-sibling、parent、preceding、preceding-sibling、self。
- 节点测试:node、text、comment、processing-instruction、element、attribute。
常用函数
XPath还提供了一些常用的函数,例如:
- contains():判断字符串是否包含指定的子串。
- starts-with():判断字符串是否以指定的前缀开头。
- ends-with():判断字符串是否以指定的后缀结尾。
- substring():截取字符串的子串。
- count():统计节点的数量。
- position():返回当前节点在父节点中的位置。
- last():返回最后一个节点的位置。
以下是两个示例说明:
示例1:使用XPath定位HTML元素
问题描述:需要使用XPath定位HTML元素,并获取元素的文本内容。
解决方案:使用XPath定位HTML元素,并使用text()函数获取元素的文本内容。
from lxml import etree
html = """
<html>
<body>
<div class="container">
<h1>标题</h1>
<p>内容</p>
</div>
</body>
</html>
"""
tree = etree.HTML(html)
title = tree.xpath('//h1/text()')[0]
content = tree.xpath('//p/text()')[0]
print(title, content)
在上面的示例中,使用XPath定位HTML元素,并使用text()函数获取元素的文本内容。
示例2:使用XPath定位XML节点
问题描述:需要使用XPath定位XML节点,并获取节点的属性值。
解决方案:使用XPath定位XML节点,并使用@符号获取节点的属性值。
from lxml import etree
xml = """
<bookstore>
<book category="COOKING">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category="CHILDREN">
<title lang="en">Harry Potter</title>
<author>J.K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
</bookstore>
"""
tree = etree.XML(xml)
title = tree.xpath('//book[1]/title/@lang')[0]
price = tree.xpath('//book[1]/price/text()')[0]
print(title, price)
在上面的示例中,使用XPath定位XML节点,并使用@符号获取节点的属性值。
总结
XPath是一种用于在XML和HTML文档中定位节点的语言。XPath使用路径表达式来定位节点,路径表达式由一系列的轴和节点测试组成。XPath还提供了一些常用的函数,例如contains()、starts-with()等。以上示例说明展示了XPath的使用方法和应用场景。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:XPath常用定位节点元素语句总结 - Python技术站