Beautiful Soup - 解析 XML



BeautifulSoup 也可以解析 XML 文档。您需要将 features='xml' 参数传递给 Beautiful() 构造函数。

假设我们在当前工作目录中拥有以下 books.xml 文件:

示例

<?xml version="1.0" ?>
<books>
   <book>
      <title>Python</title>
      <author>TutorialsPoint</author>
      <price>400</price>
   </book>
</books> 

以下代码解析给定的 XML 文件:

from bs4 import BeautifulSoup
fp = open("books.xml")
soup = BeautifulSoup(fp,  features="xml")

print (soup)
print ('type:', type(soup)) 

执行以上代码后,您应该得到以下结果:

<?xml version="1.0" encoding="utf-8"?>
<books>
<book>
<title>Python</title>
<author>TutorialsPoint</author>
<price>400</price>
</book>
</books>
type: <class 'bs4.BeautifulSoup'> 

XML 解析器错误

默认情况下,BeautifulSoup 包将文档解析为 HTML,但是,使用 beautifulsoup4 可以非常轻松地使用和处理格式不规范的 XML。

要将文档解析为 XML,您需要安装 lxml 解析器,只需将“xml”作为第二个参数传递给 Beautifulsoup 构造函数:

soup = BeautifulSoup(markup, "lxml-xml")

或者

soup = BeautifulSoup(markup, "xml")

一个常见的 XML 解析错误是:

AttributeError: 'NoneType' object has no attribute 'attrib'

这可能发生在使用 find() 或 findall() 函数时,某些元素丢失或未定义。

广告

© . All rights reserved.