BeautifulSoup
是解析 HTML 和 XML 数据的强大工具:
bashpip install bs4 lxml
pythonfrom bs4 import BeautifulSoup
html_data = '''<html><head><title>Example</title></head>
<body>
<p class="title"><b>Example Page</b></p>
<p class="content">This is an example page.</p>
<a href="http://example.com/page1" class="link">Page 1</a>
<a href="http://example.com/page2" class="link">Page 2</a>
</body></html>'''
soup = BeautifulSoup(html_data, 'html.parser') # 可用 'lxml' 或 'xml' 来处理 XML
pythontitle = soup.title.text # 获取 <title> 标签的文本内容
print(title) # 输出: Example
pythonfirst_paragraph = soup.find("p")
print(first_paragraph) # 输出第一个 <p> 标签的内容
pythonall_links = soup.find_all("a")
for link in all_links:
print(link) # 输出每个 <a> 标签的内容
pythonlink = soup.find("a", href="http://example.com/page1")
print(link) # 查找 href 为 http://example.com/page1 的 <a> 标签
pythonlink = soup.find("a", {"class": "link", "href": "http://example.com/page1"})
print(link) # 查找具有多个特定属性的标签
pythonfor link in all_links:
print(link["href"]) # 输出每个 <a> 标签的 href 属性值
pythoncontent = soup.find("p", class_="content")
print(content) # 输出 class 为 "content" 的 <p> 标签
python# 假设 HTML 中有 <div id="main">...</div>
main_div = soup.find(id="main")
print(main_div)
pythonbody = soup.body
content_paragraph = body.find("p", class_="content")
print(content_paragraph.text) # 输出嵌套查找的文本内容
BeautifulSoup
支持 CSS 选择器。
python# 选择第一个 class="title" 的 <p> 标签
title = soup.select_one("p.title")
print(title.text)
# 选择所有 class="link" 的 <a> 标签
links = soup.select("a.link")
for link in links:
print(link["href"])
python# 获取兄弟标签
first_link = soup.find("a")
next_link = first_link.find_next_sibling("a")
print(next_link) # 获取下一个兄弟 <a> 标签
# 获取父标签
parent = first_paragraph.parent
print(parent) # 获取第一个 <p> 标签的父标签
.get_text()
或 .text
.get_text(separator=", ")
pythonall_text = soup.get_text(separator=" | ")
print(all_text) # 输出整个文档的文本内容,使用 | 分隔
BeautifulSoup
还能清理并格式化 HTML,方便输出整洁的结果。
pythonprint(soup.prettify()) # 输出格式化的 HTML
本文作者:皓月归尘
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!