📅  最后修改于: 2023-12-03 15:23:49.796000             🧑  作者: Mango
BeautifulSoup 是 Python 中一个非常流行的 HTML/XML 解析库,它可以帮助我们轻松地搜索解析 HTML/XML 树。
pip install beautifulsoup4
首先,我们需要导入 BeautifulSoup 并创建一个 BeautifulSoup 对象。
from bs4 import BeautifulSoup
html_doc = """
<html>
<head>
<title>Example</title>
</head>
<body>
<div id="content">
<h1>Example</h1>
<p>Content goes here.</p>
<ul>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
</ul>
</div>
</body>
</html>
"""
soup = BeautifulSoup(html_doc, 'html.parser')
现在,我们可以搜索这个解析树了。
我们可以使用 .find()
或 .find_all()
方法来搜索标签。
# 找到第一个 div 标签
div = soup.find('div')
# 找到所有 li 标签
lis = soup.find_all('li')
# 找到第一个 h1 标签的内容
h1_text = soup.find('h1').text
.find()
方法会返回第一个匹配的标签,如果没有匹配的标签,则返回 None
。.find_all()
方法会返回所有匹配的标签,如果没有匹配的标签,则返回一个空列表。
我们还可以按照标签属性来搜索。
# 找到 id 为 content 的 div 标签
div = soup.find('div', {'id': 'content'})
# 找到 class 为 item 的所有标签
items = soup.find_all(class_='item')
# 找到所有 href 属性以 http 开头的 a 标签
urls = soup.find_all('a', href=lambda href: href.startswith('http'))
以上代码中,我们通过在第二个参数中传入标签属性来进行搜索。多个属性可以用字典表示。
我们还可以按照标签内容来搜索。
# 找到包含 Example 文本的第一个标签
tag = soup.find(text='Example')
# 找到标签内容以 Item 开头的所有标签
items = soup.find_all(text=lambda text: text.startswith('Item'))
以上代码中,我们传入一个字符串或一个函数来进行搜索。如果传入字符串,则搜索标签文本是否包含该字符串;如果传入函数,则搜索标签文本是否符合函数的条件。
以上就是使用 BeautifulSoup 搜索解析树的基本方法,希望能够帮助到大家。如果需要更多的功能,请查看官方文档。