Python Selenium爬虫:如何按联赛分类存储抓取的球员数据?
解决按联赛分类存储球员数据的问题
核心思路
先初始化一个以联赛名为键、空列表为值的字典,在循环遍历每个联赛时,把抓取到的该联赛球员数据追加到对应键的列表里即可。
具体代码示例
# 假设你已经生成了包含联赛名称的allLeagues列表 allLeagues = ["英超", "西甲", "德甲"] # 初始化字典:每个联赛对应一个空的球员列表 league_players_dict = {league: [] for league in allLeagues} # 循环遍历每个联赛 for league_name in allLeagues: # ---------------------- # 这里放你的Selenium操作代码: # 1. 切换到当前联赛的页面 # 2. 抓取该联赛的所有球员数据,存到current_league_players列表中 # 示例:假设抓取到的球员数据是字典格式的列表 current_league_players = [ {"姓名": "张三", "位置": "前锋"}, {"姓名": "李四", "位置": "中场"} ] # ---------------------- # 将当前联赛的球员数据追加到字典对应列表 # 如果是分页多次抓取,用extend();如果一次性抓完所有球员,也可以直接赋值 = current_league_players league_players_dict[league_name].extend(current_league_players) # 打印最终结果,验证每个联赛的球员数据 for league, players in league_players_dict.items(): print(f"【{league}】球员数据:") for player in players: print(player) print("-" * 30)
关键细节说明
- 字典初始化:用字典推导式
{league: [] for league in allLeagues}可以快速给每个联赛创建对应的空列表,避免后续追加数据时出现KeyError。 - 数据追加方式:
- 如果
current_league_players是球员列表,用extend()把列表里的每个球员元素添加到字典的列表中; - 如果每次只抓取到单个球员字典,用
append()添加。
- 如果
- 打印验证:不要在循环里每次都打印整个字典,建议循环结束后统一遍历字典打印,或者在循环内只打印当前联赛的抓取状态(比如
print(f"已完成{league_name}的球员抓取,共{len(current_league_players)}人")),这样输出更清晰,也能确认每一步是否正确。
内容的提问来源于stack exchange,提问作者K D
相关产品推荐
相关产品推荐

