Python抓取A股历史数据并导出Excel教程
Python抓取A股历史数据并导出Excel教程
想要获取人民币普通股所有股票的历史数据并导出到Excel?这篇文章提供了一个简单易懂的Python程序,无需API密钥,即可自动抓取数据并保存到独立的Excel文件中。
程序功能:
- 抓取上交所所有人民币普通股的股票代码和名称* 获取每只股票的历史数据,包括日期、开盘价、最高价、最低价、收盘价等* 将每只股票的历史数据保存到一个独立的CSV文件中,并以股票名称命名* 自动在桌面创建一个名为'股票历史数据'的文件夹,并将所有CSV文件保存到该文件夹中
**程序代码:**pythonimport requestsimport pandas as pdimport os
def get_stock_list(): url = 'http://www.sse.com.cn/js/common/ssesuggestdata.js' response = requests.get(url) data = response.content.decode('utf-8') stock_list = data[data.find('=')+1:].strip().strip(';').split(';') stock_data = [stock.split(',') for stock in stock_list] headers = ['股票代码', '股票名称'] df = pd.DataFrame(stock_data, columns=headers) df['股票代码'] = df['股票代码'].apply(lambda x: x[2:]) return df
def get_stock_history(symbol): url = f'http://quotes.money.163.com/service/chddata.html?code=0{symbol}&start=19900101&end=20500101&fields=TCLOSE;HIGH;LOW;TOPEN;LCLOSE;CHG;PCHG;VOTURNOVER;VATURNOVER' response = requests.get(url) data = response.content.decode('gbk') data_lines = data.split(' ')[1:-1] # 排除第一行标题和最后一个空行 stock_data = [line.split(',') for line in data_lines] headers = data_lines[0].split(',') df = pd.DataFrame(stock_data, columns=headers) df['日期'] = pd.to_datetime(df['日期']) df.set_index('日期', inplace=True) return df
获取人民币普通股所有股票代码stock_list = get_stock_list()
创建一个文件夹来存放所有的Excel文件output_folder = os.path.expanduser('~/Desktop/股票历史数据')if not os.path.exists(output_folder): os.makedirs(output_folder)
遍历股票代码并获取历史数据for index, row in stock_list.iterrows(): symbol = row['股票代码'] stock_name = row['股票名称'] # 获取历史数据 stock_history = get_stock_history(symbol) # 创建一个CSV文件来存储历史数据 output_file = os.path.join(output_folder, f'{stock_name}.csv') stock_history.to_csv(output_file)
print('所有股票历史数据已导出到CSV文件。')
使用说明:
- 确保已安装
requests和pandas库。如未安装,可使用pip install requests pandas命令安装。2. 复制以上代码并保存为Python文件(例如:stock_data.py)。3. 运行该Python文件。4. 程序运行完成后,你将在桌面上的'股票历史数据'文件夹中找到所有导出的CSV文件。
注意:
- 该程序抓取的数据来自第三方网站,数据准确性无法保证。* 股票市场数据量庞大,程序运行时间可能较长,请耐心等待。
希望这个程序能帮助你方便地获取A股历史数据!
原文地址: https://www.cveoy.top/t/topic/moQ 著作权归作者所有。请勿转载和采集!