本套课在线学习视频(网盘地址,保存到网盘即可免费观看):
https://pan.quark.cn/s/0d9ce13eec10
XPath是一种强大的查询语言,用于在XML和HTML文档中定位和选择节点。本文将详细介绍XPath的基础知识及其在数据分析中的应用,并通过实例分析帮助读者掌握XPath的使用技巧。
00:00 - XPath语法及其在数据分析中的应用
XPath的基本概念
XPath的基本单元是节点,包括元素、属性、文本等七种类型。文档以树状结构呈现,其中根节点(root)代表最顶层。XPath提供了多种方式来选取节点:
- 直接引用节点名称:通过节点名称直接选取元素。
- 从根或任意位置选取:使用
/
从根节点开始选取,使用//
从任意位置选取。 - 选取当前或父节点:使用
.
选取当前节点,使用..
选取父节点。 - 获取属性:使用
@
符号获取属性值。
示例代码
from lxml import etree
# 示例XML文档
xml_content = """
<root>
<bookstore>
<book>
<title lang="en">Harry Potter</title>
<price>29.99</price>
</book>
<book>
<title lang="en">Learning XML</title>
<price>39.95</price>
</book>
</bookstore>
</root>
"""
# 解析XML文档
tree = etree.fromstring(xml_content)
# 选取所有book节点
books = tree.xpath('//book')
for book in books:
print(book.xpath('title/text()')) # 输出: ['Harry Potter', 'Learning XML']
# 选取第一个book节点的title
first_book_title = tree.xpath('//book[1]/title/text()')
print(first_book_title) # 输出: ['Harry Potter']
# 选取所有具有lang属性的title节点
titles_with_lang = tree.xpath('//title[@lang]')
for title in titles_with_lang:
print(title.text) # 输出: Harry Potter, Learning XML
03:23 - 深入理解XPath表达式及其应用
XPath表达式的基本语法
XPath表达式通过不同的符号来选取元素和属性:
/
:从根节点开始选取。//
:从任意位置选取。*
:选取所有元素。@
:选取属性。
进一步筛选元素
通过位置、名称和属性值可以进一步筛选选取的元素:
- 位置:使用
[n]
选取第n个元素。 - 名称:使用
[@name='value']
选取具有特定属性值的元素。 - 属性值:使用
[@attribute='value']
选取具有特定属性值的元素。
组合多个路径表达式
通过组合多个路径表达式可以实现更复杂的查询需求。
示例代码
# 选取所有价格大于30的book节点
expensive_books = tree.xpath('//book[price > 30]')
for book in expensive_books:
print(book.xpath('title/text()')) # 输出: ['Learning XML']
# 选取所有具有lang属性且值为'en'的title节点
titles_with_lang_en = tree.xpath('//title[@lang="en"]')
for title in titles_with_lang_en:
print(title.text) # 输出: Harry Potter, Learning XML
综合示例
以下是一个综合示例,展示了如何使用XPath进行复杂查询:
# 选取所有具有lang属性且值为'en'的title节点,并且其父节点book的价格大于30
titles_with_lang_en_and_price_gt_30 = tree.xpath('//book[price > 30]/title[@lang="en"]')
for title in titles_with_lang_en_and_price_gt_30:
print(title.text) # 输出: Learning XML
通过这些示例代码,您可以更好地理解XPath的语法和应用,从而高效地处理和解析XML和HTML文档数据。