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

如何在Python爬虫中将循环提取的事件标签分组到单个列表索引中

解决方案:合并每个事件的标签为单个列表元素

没问题,这个需求很常见,咱们稍微调整下代码逻辑就能实现你想要的效果~

问题根源

你当前的代码是遍历到每个标签<span>就直接把文本添加到列表里,所以每个标签都是独立的列表元素。而我们需要以每个事件(也就是每个card-body对应的区块)为单位,先收集该事件下的所有标签,再合并成一个字符串后加入列表。

修改后的代码

import requests
from bs4 import BeautifulSoup
URL = "https://aiml.events/"
page = requests.get(URL)
soup = BeautifulSoup(page.content, 'lxml')
# Scrape Event Tags
event_tags_list = []
event_tag_div = soup.find_all('div', class_ = 'card-body')
for event_div in event_tag_div:
    # 临时列表,存储当前事件的所有标签
    current_event_tags = []
    event_span = event_div.find_all('span', class_ = 'badge badge-light badge-pill')
    for tag in event_span:
        # 用strip()去除标签文本前后可能的空白字符
        current_event_tags.append(tag.text.strip())
    # 将当前事件的所有标签合并为一个逗号分隔的字符串
    merged_tags = ', '.join(current_event_tags)
    # 可选:跳过没有标签的事件,避免列表出现空字符串
    if merged_tags:
        event_tags_list.append(merged_tags)

# 验证结果
print(event_tags_list)

关键逻辑说明

  1. 按事件分组收集标签:在遍历每个事件区块event_div时,先创建临时列表current_event_tags,专门存储这个事件下的所有标签文本。
  2. 合并标签为字符串:用Python的str.join()方法,把临时列表里的标签文本用, (逗号加空格)连接成一个完整的字符串。
  3. 过滤空元素:添加判断条件,只有当合并后的字符串不为空时才加入最终列表,避免出现无意义的空元素(这一步是可选的,根据你的需求调整)。

这样处理后,event_tags_list里的每个元素就对应一个事件的所有标签集合,完全符合你期望的格式啦!

内容的提问来源于stack exchange,提问作者Raspberry Lemon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 07:22:29