You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Beautiful Soup将指定标签提取为列表?

解决Beautiful Soup提取标签列表的问题

你之前的代码问题在于,直接获取了整个<span class="entry-tags-inner">标签的文本内容,所以得到的是所有标签文本拼接后的字符串,而非单个标签组成的列表。以下是两种正确的实现方式:

方法一:直接定位目标<a>标签

直接找到所有带有entry-tag类的<a>标签,提取每个标签的文本:

from bs4 import BeautifulSoup

html = '''<p class="entry-tags">
    <span class="entry-tags-inner">
        <a href="#" class="entry-tag entry-tag-10165">Tag1</a>
        <a href="#" class="entry-tag entry-tag-29555">Tag2</a>
        <a href="#" class="entry-tag entry-tag-10169">Tag3</a>
        <a href="#" class="entry-tag entry-tag-24312">Tag4</a>
        <a href="#" class="entry-tag entry-tag-23324">Tag5</a>
    </span>
</p>'''

soup = BeautifulSoup(html, 'html.parser')
# 定位所有class为entry-tag的a标签
tag_elements = soup.find_all('a', class_='entry-tag')
# 提取每个标签的文本,strip=True去除多余空白
tag_list = [tag.get_text(strip=True) for tag in tag_elements]
print(tag_list)

输出结果:

['Tag1', 'Tag2', 'Tag3', 'Tag4', 'Tag5']

方法二:先找到父级<span>再遍历子标签

如果需要先定位到entry-tags-inner这个span,再遍历其下的<a>标签:

from bs4 import BeautifulSoup

html = '''<p class="entry-tags">
    <span class="entry-tags-inner">
        <a href="#" class="entry-tag entry-tag-10165">Tag1</a>
        <a href="#" class="entry-tag entry-tag-29555">Tag2</a>
        <a href="#" class="entry-tag entry-tag-10169">Tag3</a>
        <a href="#" class="entry-tag entry-tag-24312">Tag4</a>
        <a href="#" class="entry-tag entry-tag-23324">Tag5</a>
    </span>
</p>'''

soup = BeautifulSoup(html, 'html.parser')
# 找到目标span标签(因为只有一个,用find比find_all更高效)
tags_container = soup.find('span', class_='entry-tags-inner')
# 遍历span下的所有a标签,提取文本
tag_list = [a.get_text(strip=True) for a in tags_container.find_all('a')]
print(tag_list)

输出结果和方法一一致。

注:get_text(strip=True)会自动去除文本前后的换行、空格等空白字符,避免HTML缩进带来的多余空格。

内容的提问来源于stack exchange,提问作者Alexander Varovsky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 19:42:54