使用BeautifulSoup将XML结构转换为DataFrame的步骤如下:
- 导入BeautifulSoup和pandas库
from bs4 import BeautifulSoup
import pandas as pd
- 载入XML文件并解析成BeautifulSoup对象
with open('file.xml', 'r') as f:
xml = f.read()
soup = BeautifulSoup(xml, 'xml')
这里使用了with语句,可以确保在程序执行结束后自动关闭文件。
- 找到所有要提取的XML节点
使用find_all()方法找到XML文档中所有要提取的节点,由于节点可能出现多次,所以这里返回的是一个列表。例如,在以下XML文档中找到所有的book节点:
<?xml version="1.0"?>
<books>
<book>
<title>Python Machine Learning</title>
<author>Sebastian Raschka, Vahid Mirjalili</author>
<year>2019</year>
</book>
<book>
<title>Python for Data Analysis</title>
<author>Wes McKinney</author>
<year>2017</year>
</book>
</books>
可以使用以下代码找到所有book节点:
books = soup.find_all('book')
- 将XML节点转换为DataFrame格式
在找到所有要提取的XML节点后,可以将其转换为DataFrame格式。例如,在以上XML文档中,可以将所有book节点中的title、author、year节点转换为DataFrame格式:
data = []
for book in books:
title = book.find('title').text
author = book.find('author').text
year = book.find('year').text
data.append([title, author, year])
df = pd.DataFrame(data, columns=['Title', 'Author', 'Year'])
这里使用了一个列表来保存所有要提取的数据,然后将其转换为DataFrame格式。
完整代码如下:
from bs4 import BeautifulSoup
import pandas as pd
with open('file.xml', 'r') as f:
xml = f.read()
soup = BeautifulSoup(xml, 'xml')
books = soup.find_all('book')
data = []
for book in books:
title = book.find('title').text
author = book.find('author').text
year = book.find('year').text
data.append([title, author, year])
df = pd.DataFrame(data, columns=['Title', 'Author', 'Year'])
这样就完成了使用BeautifulSoup将XML结构转换为DataFrame的操作。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用BeautifulSoup将XML结构转换为DataFrame - Python技术站