首页 > 解决方案 > 如何在单个列表索引中对循环元素进行分组

问题描述

我在python中有一个for循环,它使用beautifulsoup从网站中提取数据并将它们附加到一个列表中。我正在尝试从事件名称中抓取标签,例如:AI、大数据、ML 等。

我的代码:

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:
  event_span = event_div.find_all('span', class_  = 'badge badge-light badge-pill')
  for event_tags in event_span:
    print(event_tags.text)
     

我要获取的标签

我能够获取标签,但它们都是独立的。我希望能够将它们组合在一起。目前我的清单是这样的:

tag_list = ['Artificial Intelligence', 'Artificial Intelligence','Machine Learning', 'Healthcare', 'Artificial Intelligence','Public Sector' ] 

我的期望:

tag_list = ['Artificial Intelligence', 'Artificial Intelligence,Machine Learning, Healthcare', 'Artificial Intelligence,Public Sector' ] 

任何帮助表示赞赏。对不起,如果这个问题太基本了。

标签: pythonbeautifulsoup

解决方案


用您加入字符串的生成器替换内部循环。

for event_div in event_tag_div:
    event_span = event_div.find_all('span', class_  = 'badge badge-light badge-pill')
    event_tag_list.append(','.join(event_tag.text for event_tag in event_span))

推荐阅读