📜  如何使用 BeautifulSoup 搜索解析树?(1)

📅  最后修改于: 2023-12-03 15:23:49.796000             🧑  作者: Mango

如何使用 BeautifulSoup 搜索解析树?

简介

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 搜索解析树的基本方法,希望能够帮助到大家。如果需要更多的功能,请查看官方文档。