📅  最后修改于: 2023-12-03 14:49:37.540000             🧑  作者: Mango
BeautifulSoup 是一个功能强大的 Python 库,用于解析 HTML 和 XML 文档。在数据挖掘和爬虫方面,它特别有用。它可以帮助您轻松解析复杂的 HTML 和 XML 文档,找到您需要的数据并提取出来。
本文将介绍如何使用 BeautifulSoup 解析表格和 XML。
要解析 HTML 表格,首先需要将 HTML 文档作为输入传递给 BeautifulSoup。假设我们有以下 HTML 表格:
<table>
<tr>
<th>Name</th>
<th>Age</th>
<th>Gender</th>
</tr>
<tr>
<td>John</td>
<td>27</td>
<td>Male</td>
</tr>
<tr>
<td>Jane</td>
<td>25</td>
<td>Female</td>
</tr>
</table>
我们可以使用以下 Python 代码来解析上述表格:
from bs4 import BeautifulSoup
html_doc = """
<table>
<tr>
<th>Name</th>
<th>Age</th>
<th>Gender</th>
</tr>
<tr>
<td>John</td>
<td>27</td>
<td>Male</td>
</tr>
<tr>
<td>Jane</td>
<td>25</td>
<td>Female</td>
</tr>
</table>
"""
soup = BeautifulSoup(html_doc, 'html.parser')
table = soup.find('table')
# 获取表格标题
headers = []
for th in table.find_all('th'):
headers.append(th.text)
print(headers)
# 获取表格数据
rows = []
for tr in table.find_all('tr'):
row = []
for td in tr.find_all('td'):
row.append(td.text)
if row:
rows.append(row)
print(rows)
输出结果如下:
# 获取表格标题
['Name', 'Age', 'Gender']
# 获取表格数据
[
['John', '27', 'Male'],
['Jane', '25', 'Female']
]
XML 是一种常用的半结构化数据格式,它比 HTML 更通用。虽然 BeautifulSoup 最初是为解析 HTML 而设计的,但它也可以用于解析 XML。假设我们有以下 XML 文档:
<persons>
<person>
<name>John</name>
<age>27</age>
<gender>Male</gender>
</person>
<person>
<name>Jane</name>
<age>25</age>
<gender>Female</gender>
</person>
</persons>
我们可以使用以下 Python 代码来解析上述 XML 文档:
from bs4 import BeautifulSoup
xml_doc = """
<persons>
<person>
<name>John</name>
<age>27</age>
<gender>Male</gender>
</person>
<person>
<name>Jane</name>
<age>25</age>
<gender>Female</gender>
</person>
</persons>
"""
soup = BeautifulSoup(xml_doc, 'xml')
persons = soup.find_all('person')
# 获取每个 Person 实例的属性和文本节点
for person in persons:
print(person.name.text)
print(person.age.text)
print(person.gender.text)
输出结果如下:
John
27
Male
Jane
25
Female
可以看到,我们还可以像解析 HTML 一样轻松地解析 XML 文档。
到此为止,您已经学会了使用 BeautifulSoup 解析表格和 XML 文档。这是数据挖掘和爬虫方面的重要基础知识。希望这篇文章对您有所帮助!