python爬取上证股票的历史记录并画历史收盘图曲线

Hea ·
更新时间:2024-11-13
· 679 次阅读

环境如下:
语言:python3.7
IDE: Pycharm-2020.1.1
包环境管理:anaconda 4.8.2
库文件:request, pandas, matplotlib, bs4, pandas_datareader
要连接互联网~~~~

问题:很多小伙伴想用机器学习方法对股票进行量化分析,我们面临的第一个问题是如何获得其历史数据?
如何解决上述问题?使用python爬虫爬取历史数据,或者更确切的说,先爬取股票代码,然后使用pandas_datareader从yahoo上获取该股票的历史数据。该网站可以获取到所有上证股票的股票代码。借鉴蒹葭杰克兄弟的代码,对其代码稍作改进,以方便使用。

获取数据部分 import matplotlib.pyplot as plt import pandas as pd import pandas_datareader.data as web import requests import bs4 as bs def get_stock_code(): res = requests.get('https://www.banban.cn/gupiao/list_sh.html') res.encoding = res.apparent_encoding soup = bs.BeautifulSoup(res.text, 'lxml') content = soup.find('div', {'class':'u-postcontent cz'}) result = [] for item in content.findAll('a'): result.append(item.text) return result def get_stock_history(stock_name, stock_code, save_dir):#当然你可以在参数里加上起始日期,start_date, end_date,在DataReader()里替换'2012-01-01'和'2020-05-08' if stock_code[-2:] != 'ss': stock_code = str(stock_code) + '.ss' df = web.DataReader(stock_code, data_source='yahoo', start='2012-01-01', end='2020-05-08') df.to_csv(save_dir + '/{}{}.csv'.format(stock_name, stock_code)) if __name__=='__main__': stock_name_code = get_stock_code() for i in stock_name_code: print(i)

输出结果如下图所示:
原创文章 3获赞 2访问量 1935 关注 私信 展开阅读全文
作者:icedragonliu



股票 Python

需要 登录 后方可回复, 如果你还没有账号请 注册新账号