如何解析XML数据?

  • Post category:Python

网络爬虫通常使用解析库来处理XML数据,这些库提供了一些方便的功能,以帮助开发人员快速准确地解析XML数据。下面是使用Python中的两个流行的XML解析库解析XML数据的示例攻略。

用lxml解析XML数据

lxml是一个流行的Python库,它可以解析和处理XML和HTML等这些不同类型的数据。lxml库封装了C库Libxml2和Libxslt。 使用lxml库解析XML的过程如下:

步骤1: 导入库

from lxml import etree

步骤2: 加载XML数据

xml = etree.parse("file.xml")

步骤3: 获取根元素

root = xml.getroot()

步骤4: 遍历XML数据

例如,遍历XML中的所有元素:

for element in root.iter():
    print(element.tag, element.attrib, element.text)

例子:假设有XML数据如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<catalog>
   <book id="001">
      <author>John Smith</author>
      <title>Python for Beginners</title>
      <genre>Programming</genre>
      <price>19.95</price>
      <publish_date>2014-05-29</publish_date>
   </book>
   <book id="002">
      <author>Jane Doe</author>
      <title>Java Programming</title>
      <genre>Programming</genre>
      <price>24.50</price>
      <publish_date>2013-10-01</publish_date>
   </book>
</catalog>

可以使用以下代码使用lxml库解析XML数据:

from lxml import etree

xml = etree.parse("file.xml")
root = xml.getroot()

for element in root.iter():
    print(element.tag, element.attrib, element.text)

输出结果如下:

catalog {} 

book {'id': '001'} 

author {} John Smith
title {} Python for Beginners
genre {} Programming
price {} 19.95
publish_date {} 2014-05-29

book {'id': '002'} 

author {} Jane Doe
title {} Java Programming
genre {} Programming
price {} 24.50
publish_date {} 2013-10-01

用ElementTree解析XML数据

ElementTree是Python标准库提供的XML库之一,它提供了一些非常简单的API,用于解析和处理XML数据,如下所示:

步骤1: 导入库

import xml.etree.ElementTree as ET

步骤2:加载XML数据

tree = ET.parse("file.xml")

步骤3: 获取根元素

root = tree.getroot()

步骤4: 解析XML数据

例如,从XML中获取所有元素:

for element in root.iter():
    print(element.tag, element.attrib, element.text)

例子:假设有XML数据如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<catalog>
   <book id="001">
      <author>John Smith</author>
      <title>Python for Beginners</title>
      <genre>Programming</genre>
      <price>19.95</price>
      <publish_date>2014-05-29</publish_date>
   </book>
   <book id="002">
      <author>Jane Doe</author>
      <title>Java Programming</title>
      <genre>Programming</genre>
      <price>24.50</price>
      <publish_date>2013-10-01</publish_date>
   </book>
</catalog>

可以使用以下代码使用ElementTree库解析XML数据:

import xml.etree.ElementTree as ET

tree = ET.parse("file.xml")
root = tree.getroot()

for element in root.iter():
    print(element.tag, element.attrib, element.text)

输出结果如下:

catalog {} 

book {'id': '001'} 

author {} John Smith
title {} Python for Beginners
genre {} Programming
price {} 19.95
publish_date {} 2014-05-29

book {'id': '002'} 

author {} Jane Doe
title {} Java Programming
genre {} Programming
price {} 24.50
publish_date {} 2013-10-01