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() 函式時,某些元素丟失或未定義。

廣告