本文使用网易财经http接口获取股票的报表数据,包括主要财务指标、资产负债表、利润表、现金流表。获取股票数据请参考使用Python获取股票实时数据和历史数据。
网易财经http接口发回来的是csv文件,先在本地存一份临时文件,再通过pandas打开进行处理。以上四种表都是按季报的时间存储,但是有些表在部分季度(时间比较久远)没有,也就是说在时间节点上四种表不能保持一致。
import requests
import pandas as pd
def washData(df):
df = df.replace({0: '--'}) #如果数据是0换成'--'
#数据第一列的中文会多出空格,需要处理掉
df.columns.values[0] = df.columns.values[0].replace(' ', '')
for row in range(0, df.shape[0]):
col_name = df.columns.values[0]
df.loc[row, col_name] = df.loc[row, col_name].replace(' ', '')
# number: 股票代码
# type: zycwzb:主要财务指标 zcfzb:资产负债表 lrb:利润表 xjllb:现金流表
def getReportData(number, type):
url = 'http://quotes.money.163.com/service/' + type + '_' + number + '.html'
f = open("temp.csv", "wb")
f.write(requests.get(url).content)
f.close()
df = pd.read_csv('temp.csv', encoding='gbk')
washData(df)
dataList = []
for col in range(1, df.shape[1] - 1):
dataList.append({})
col_name = df.columns.values[col]
dataList[col - 1]['报告日期'] = col_name
for row in range(0, df.shape[0]):
key_name = df.loc[row, '报告日期']
dataList[col - 1][key_name] = df.loc[row, col_name]
return dataList
if __name__ == '__main__':
print(getReportData('600000', 'zycwzb'))
获取到的数据样例:
[
{'报告日期': '2021-09-30', '基本每股收益(元)': '1.34', '每股净资产(元)': '18.83', '每股经营活动产生的现金流量净额(元)': '-5.75', '主营业务收入(万元)': '14348400', '主营业务利润(万元)': '4746400', '营业利润(万元)': '4746400', '投资收益(万元)': '1121800', '营业外收支净额(万元)': '-11600', '利润总额(万元)': '4734800', '净利润(万元)': '4153600', '净利润(扣除非经常性损益后)(万元)': '4126400', '经营活动产生的现金流量净额(万元)': '-16891000', '现金及现金等价物净增加额(万元)': '-2774400', '总资产(万元)': '806438300', '流动资产(万元)': '--', '总负债(万元)': '739376000', '流动负债(万元)': '--', '股东权益不含少数股东权益(万元)': '66252800', '净资产收益率加权(%)': '7.25'},
{'报告日期': '2021-06-30', '基本每股收益(元)': '0.99', '每股净资产(元)': '18.49', '每股经营活动产生的现金流量净额(元)': '-7.25', '主营业务收入(万元)': '9736500', '主营业务利润(万元)': '3475800', '营业利润(万元)': '3475800', '投资收益(万元)': '674500', '营业外收支净额(万元)': '-3600', '利润总额(万元)': '3472200', '净利润(万元)': '2983800', '净利润(扣除非经常性损益后)(万元)': '2972900', '经营活动产生的现金流量净额(万元)': '-21286200', '现金及现金等价物净增加额(万元)': '-1746200', '总资产(万元)': '812312000', '流动资产(万元)': '--', '总负债(万元)': '746265900', '流动负债(万元)': '--', '股东权益不含少数股东权益(万元)': '65258300', '净资产收益率加权(%)': '5.36'},
{'报告日期': '2021-03-31', '基本每股收益(元)': '0.61', '每股净资产(元)': '18.59', '每股经营活动产生的现金流量净额(元)': '-4.42', '主营业务收入(万元)': '4952200', '主营业务利润(万元)': '2229500', '营业利润(万元)': '2229500', '投资收益(万元)': '318700', '营业外收支净额(万元)': '1200', '利润总额(万元)': '2230700', '净利润(万元)': '1869700', '净利润(扣除非经常性损益后)(万元)': '1862800', '经营活动产生的现金流量净额(万元)': '-12970500', '现金及现金等价物净增加额(万元)': '-5344200', '总资产(万元)': '806699500', '流动资产(万元)': '--', '总负债(万元)': '740353000', '流动负债(万元)': '--', '股东权益不含少数股东权益(万元)': '65568900', '净资产收益率加权(%)': '3.35'},
...
{'报告日期': '1996-12-31', '基本每股收益(元)': '0.63', '每股净资产(元)': '1.58', '每股经营活动产生的现金流量净额(元)': '--', '主营业务收入(万元)': '421627', '主营业务利润(万元)': '66282', '营业利润(万元)': '66282', '投资收益(万元)': '31729', '营业外收支净额(万元)': '800', '利润总额(万元)': '98811', '净利润(万元)': '62911', '净利润(扣除非经常性损益后)(万元)': '--', '经营活动产生的现金流量净额(万元)': '--', '现金及现金等价物净增加额(万元)': '--', '总资产(万元)': '6506717', '流动资产(万元)': '5792734', '总负债(万元)': '6348726', '流动负债(万元)': '4975628', '股东权益不含少数股东权益(万元)': '157991', '净资产收益率加权(%)': '--'}
]
所有数据名称: