如何使用Pandas DataFrame提取维基百科表格中的指定单列数据
问题修正方案
你代码存在以下几个可直接定位的问题:
- 未定义
headers变量:调用requests.get时传入了未赋值的headers参数会触发变量未定义报错,且这行请求代码实际未被后续逻辑使用 - 未提取
pd.read_html返回的表格对象:pd.read_html匹配到符合条件的表格后会返回一个列表,需要取列表第一个元素才能得到存储表格数据的DataFrame,原代码未给df赋值就直接调用df.iloc属于变量未定义错误 - 未指定提取第一列:直接打印整个DataFrame自然会输出全表内容,单独提取对应股票代码的
Symbol列即可
可直接运行的修正代码
import pandas as pd url = "https://en.wikipedia.org/wiki/List_of_S%26P_500_companies" # 读取目标表格,取返回列表的第一个元素得到DataFrame tables = pd.read_html(url, attrs={'id': 'constituents'}) df = tables[0] # 提取第一列股票代码数据 stock_symbols = df['Symbol'] print(stock_symbols) # 导出到本地文件可取消注释下一行 # stock_symbols.to_csv('Stock_List.txt', index=False, encoding='utf-8')
如果遇到请求被拦截的情况,可补充请求头后再解析:
import requests import pandas as pd headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" } url = "https://en.wikipedia.org/wiki/List_of_S%26P_500_companies" r = requests.get(url, headers=headers) tables = pd.read_html(r.text, attrs={'id': 'constituents'}) df = tables[0] stock_symbols = df['Symbol'] print(stock_symbols)
内容的提问来源于stack exchange,提问作者seanofdead
相关产品推荐
相关产品推荐

