使用Python(BS/Requests)从yFinance爬取收盘价的问题
爬取yFinance历史数据收盘价的解决方案
方法一:遍历表格行(推荐,更稳健)
直接提取所有数据行,再从每行中定位收盘价所在的td:
# 假设已获取解析后的soup对象 # 获取所有历史数据行(跳过表头,表头行class通常不同) data_rows = soup.find_all('tr', class_="BdT Bdc($seperatorColor) Ta(end) Fz(s)") close_prices = [] for row in data_rows: # 提取当前行的所有数据单元格 cells = row.find_all('td', class_="Py(10px) Pstart(10px)") # 确保单元格数量足够,避免索引越界 if len(cells) >= 4: # 第4个单元格(索引3)对应收盘价,提取并清理文本 close_price = cells[3].get_text(strip=True) close_prices.append(close_price) # 查看所有收盘价 print(close_prices)
方法二:切片提取(依赖固定列数)
如果确认每行的列数固定(比如每行6列:日期、开盘、最高、最低、收盘、成交量),可以直接从所有td列表中按步长提取:
all_cells = soup.find_all('td', class_="Py(10px) Pstart(10px)") # 从索引3开始,每6个单元格取一个(对应每行的收盘价) close_prices = [cell.get_text(strip=True) for cell in all_cells[3::6]]
说明:yFinance的历史数据表格中,每行的td按固定顺序排列,收盘价位于第4个位置(索引从0开始计数),通过以上两种方式可以批量获取所有日期对应的收盘价。
内容的提问来源于stack exchange,提问作者Ahithophel Yeboah-Peprah
相关产品推荐
相关产品推荐

