环境如下:
语言: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