使用Python获取股票的报表数据

本文使用网易财经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', '净资产收益率加权(%)': '--'}
]

所有数据名称:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值