Python爬虫提取的运动员身高数据如何正确追加到列表中?
代码问题分析
height_list.append()语句放在了for循环外部,只会在循环结束后执行1次,添加的是循环最后一次迭代的i对应的身高值,是列表数据异常的核心原因。- for循环内部用大括号包裹代码是错误写法,Python的代码块靠缩进区分,你写的大括号属于无用冗余代码,也导致追加操作没有被纳入循环执行逻辑。
- 身高数据重复是因为页面同时渲染了桌面端、移动端两套 roster 节点,所以
find_all会抓到46个身高节点,取前23条的逻辑是可行的。
修正后代码
import requests from bs4 import BeautifulSoup url = 'https://athletics.baruch.cuny.edu/sports/mens-swimming-and-diving/roster' page = requests.get(url) soup = BeautifulSoup(page.content, 'html.parser') # 创建空列表分别存储以英寸为单位的身高和原始爬取身高 height_inches = [] height_list = [] heights = soup.find_all('span', class_= "sidearm-roster-player-height") # 直接取前23条有效身高,避免重复数据 for i in range(23): height_text = heights[i].get_text() print(height_text) # 追加操作放到循环内部,每次迭代都添加当前身高 height_list.append(height_text) print(height_list)
内容的提问来源于stack exchange,提问作者user17003245
相关产品推荐
相关产品推荐

