📅  最后修改于: 2023-12-03 14:59:30.707000             🧑  作者: Mango
Beautiful Soup 是一个用于 web 数据抽取的 Python 库。它能够从 HTML 或 XML 文件中提取数据,具有快速、灵活、易用的特点。
使用 pip 命令即可安装 Beautiful Soup。
pip install beautifulsoup4
使用 Python 解析器进行解析,其中 Beautiful Soup 会对 HTML 标签和特性进行解析和转换。
from bs4 import BeautifulSoup
html_doc = """
<html>
<head>
<title>.title { color: red }</title>
</head>
<body>
<h1 class="title">Beautiful Soup</h1>
<p class="description">Web 抽取库</p>
<ul>
<li><a href="http://www.example.com">example</a></li>
<li><a href="http://www.example.com">example</a></li>
</ul>
</body>
</html>
"""
# 将 HTML 代码解析成 Beautiful Soup 对象
soup = BeautifulSoup(html_doc, 'html.parser')
# 输出标题文本
print(soup.title.string)
# 输出所有链接文本
for link in soup.find_all('a'):
print(link.string)
Beautiful Soup 同样可以用于提取 XML 数据,其原理同抽取 HTML 数据类似。
import xml.etree.ElementTree as et
xml = '''
<root>
<item name="item1">Item One</item>
<item name="item2">Item Two</item>
<item name="item3">Item Three</item>
</root>
'''
# 将 XML 代码解析成 Beautiful Soup 对象
soup = BeautifulSoup(xml, 'xml')
# 获取所有 item
items = soup.find_all('item')
# 输出所有 item 的 name 和文本
for item in items:
print(item['name'], item.string)
Beautiful Soup 支持使用 CSS 选择器进行元素选择,使用起来非常方便。
from bs4 import BeautifulSoup
html_doc = """
<html>
<head>
<title>Beautiful Soup</title>
</head>
<body>
<h1 class="title">Beautiful Soup</h1>
<div id="content">
<p class="description">Web 抽取库</p>
<ul>
<li><a href="http://www.example.com">example</a></li>
<li><a href="http://www.example.com">example</a></li>
</ul>
</div>
</body>
</html>
"""
# 将 HTML 代码解析成 Beautiful Soup 对象
soup = BeautifulSoup(html_doc, 'html.parser')
# 使用 CSS 选择器
print(soup.select('#content > p.description')[0].text)
Beautiful Soup 是一个非常实用的 web 数据抽取库,能够方便地从 HTML 或 XML 文件中提取数据,并支持多种选择器进行元素选择。如果你需要从网页中获取数据,不妨试试 Beautiful Soup。