量化投资的第一步在于需要一个数据库,数据库必须包括以下三部分内容。
1)股票历史行情数据、包括股票历史上每个交易日的交易状态、涨跌幅、开盘价、收盘价、成交量等数据。
2)上市公司的财务数据、包括上市公司公布的资产负债表、现金流量表、利润表上的各项指标
3)上市公司的重要指标、比如ROE、ROA、资产负债率、净利率等
首先,我们新建一个类,命名为Download_HistoryData,顾名思义就是获得股票历史数据。在同个目录下新建三个文件夹trading、indicator、finance分别用来存放历史行情数据、重要指标数据、财务数据。
# -*- coding: utf-8 -*-
'''
功能:爬区所有A股历史数据
'''
import pandas as pd
import requests as re
from lxml import etree
import os
class Download_HistoryData(object):
def __init__(self,it=10):
self.code_list = self.get_all_codes() #获取A股所有股票代码
self.path_trading = 'D:\\database\\history\\trading\\'#股票历史行情数据的路径
self.path_indicator = 'D:\\database\\history\\indicator\\'#股票历史指标数据的路径
self.path_finance = 'D:\\database\\history\\finance\\'#股票历史财务数据的路径
self.it=it #默认错误的重复相应次数为10次
self.headers = {
"User-Agent": ":Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36"
}
#建立相应的文件夹
if not os.path.exists(self.path_trading):
os.makedirs(self.path_trading)
if not os.path.exists(self.path_indicator):
os.makedirs(self.path_indicator)
if not os.path.exists(self.path_finance):
os.makedirs(self.path_finance)
然后我们需要获取所有A股的股票代码。我们从东方财富网的股票行情区抓取了所有股票当天的历史行情数据,并提取股票代码,就是当前A股所有股票的代码,并赋值个self.code_list。
def get_all_codes(self):
#得到所有股票代码#
code_list=[]
for i in range(1,10):
url = 'http://nufm.dfcfw.com/EM_Finance2014NumericApplication/JS.aspx?type=CT&cmd=C._A&sty=FCOIATA&sortType=(Code)&sortRule=1&page='+str(i)+&