📜  python中的xpath解析(1)

📅  最后修改于: 2023-12-03 15:34:25.896000             🧑  作者: Mango

Python中的XPath解析

简介

XPath是一种用于在XML文档中进行导航和提取信息的语言。在Python中,XPath解析是非常常见的数据提取方法,也是很多爬虫工具的基础。

Python中有多个XPath解析库可供选择,如lxml、xml.etree.ElementTree和xml.dom等等。这篇文章将介绍最常用的XPath解析库——lxml。

安装lxml

在Python中使用lxml解析XPath前,我们首先需要将其安装。可以使用pip来安装:

pip install lxml
解析XML

在使用lxml解析XML之前,我们需要先将XML文件读取进来。下面是一个简单的例子:

from lxml import etree

# 读取XML文件
xml_file = 'example.xml'
with open(xml_file, 'r') as f:
    xml_string = f.read()

# 解析XML
root = etree.fromstring(xml_string)
XPath表达式

XPath表达式是XPath语言的核心,它用于在XML文档中选择节点。XPath表达式可以使用绝对路径或相对路径来选取节点。

如下面是一些XPath表达式的例子:

  • /bookstore/book:选取根元素bookstore下的所有book元素。
  • /bookstore/book/title:选取根元素bookstore下的所有book元素中的title元素。
  • bookstore//title:选取根元素bookstore下的所有title元素,无论它们在文档中的位置如何。
  • //title:选取文档中的所有title元素。
  • //book[@category='CHILDREN']:选取category属性为'CHILDREN'的book元素。
  • //book[@category='CHILDREN']/title:选取category属性为'CHILDREN'的book元素中的title元素。
解析XPath

在解析XPath时,我们可以使用xpath()方法。该方法返回所选节点的列表。

如下面是一个简单的例子:

# 解析书名
titles = root.xpath('//book/title')
for title in titles:
    print(title.text)
XPath语法

在XPath语法中,有一些常见的符号和缩写:

  • /:从根节点开始选取。
  • //:从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。
  • .:选取当前节点。
  • ..:选取当前节点的父节点。
  • @:选取属性。
  • []:用于属性过滤。
  • |:选取若干个路径。

如下面是一些XPath语法的例子:

  • //@class:选取文档中的所有class属性。
  • //p[@class="test"]:选取所有class属性为"test"的p元素。
  • //p[@class="test" and @id="test_id"]:选取所有class属性为"test"且id属性为"test_id"的p元素。
  • //p[text()="test_text"]:选取所有文本为"test_text"的p元素。
  • //p[starts-with(@class, "prefix_")]:选取所有class属性以"prefix_"开头的p元素。
结语

本文介绍了Python中的XPath解析,首先安装了lxml库,然后读取XML文件,使用XPath表达式选取节点,并解析出相应的数据。同时,我们还介绍了XPath语法中的一些重要内容和符号缩写。希望这篇文章可以帮助你了解XPath解析的基本使用方法。