创新国学
首页 > 生辰八字 > 八字十神 > 财官

《一个财务分析小工具(Excel版)-知乎专栏

时间:作者:周易知识库

《一个财务分析小工具(Excel版)-知乎专栏

内容提要1) 获取需要下载数据的股票代码列表

2) 寻找可以下载数据的数据接口

3) 下载并保存数据

拿手机看股票和股票证券交易背景

关于使用分析财务报表的场景,我认为主要有:1)同业分析:批量计算、比较,也就是将同业财务指标显示或者导出;2)选股:比如筛选近三年roe大于15%的公司、最近一期所有roe大于15%的公司等。如果是针对单个公司进行分析,给大家安利一下我之前提供的《一个财务分析小工具(Excel版) - 知乎专栏》,这个工具已经将主要科目及变动,增长分析等已经涵盖了,我自己现在也在用这个工具。一般来说选对工具也可以达到事半功倍的效果。。

本文分文上下两篇,上篇主要说数据采集,下篇主要讲通过财务指标进行比较和分析

有人问为什么不直接分享代码《一个财务分析小工具(Excel版)-知乎专栏,其实完成财务分析所需代码简单到爆,任何一个程序员写的都比我漂亮百倍(我只是网工狗里面代码写的较好的,也可能是网工狗里面财务分析较好的),但是一方面当心别有用心的人滥用接口导致接口失效,另一方面爬取别人网站的数据终归是不太好的,所以里面涉及的财务接口并不适合公开出来。基于这些考虑,我之前分享的EXCEL工具也对代码部分加了密。同样,这一篇我也不打算公开分享代码而只分享思路,如果你有心,在主要财经网站都能找的到下载接口。接口都找到了,按照本文思路,很容易获得全市场上市公司财务数据。

本文虽然简单,但还是需要一定基础的,如果大家对一无所知但又比较感兴趣的话,建议看一下我得别的文章!本文示例代码基于.5,演示平台为。关于环境的搭建,系统可直接安装问财官网,啥都给你安装好。至于Linux等其他系统,我就默认你为IT人士了,想来部署个开发环境应该是小菜一碟。我不准备进行详细介绍。

财务数据的采集

啰嗦完了,言归正传,网络爬虫要解决问题主要有三个:

1) 怕什么?

2) 到哪里去爬?

3) 数据清洗、储存?

一、获取所有股票代码

为了爬取所有上市公司财务数据,我们首先需要取得所有上市公司的公司代码。这个在里面已经有了不错的解决方法。那就是使用财经库,可以获得所有股票代码、沪深300成份股等。如果没有安装,请使用pip 安装财经库。官网:

1)看看是是否装好:

新建一个,在一个cell中键入代码

as t

t.

输入后按SHIFT+ENTER运行问财官网,显示

这里是最新的0.8.2版。

2) 获取股票列表(在另一个cell中输入代码):

=t.()

这两句代码的作用,一是通过财经库获取所有股票列表以及基本信息,并返回一些股票基本信息,如区域、行业、总资产这些数据,返回结果是一个.表格。取决于网络环境,该代码大概耗时5-6秒时间。返回结果:

返回值有20多个字段,我们只需要其中的一部分数据,可以使用ix切片,把股票代码,名称,区域,行业切出来。(比如我们只截取 name,area,字段)

=.ix[:,['name','','area']]# ix[行条件,列条件],这里表示截取所有行,name,,area字段,返回一个

如果你对一些新股不敏感《一个财务分析小工具(Excel版)-知乎专栏,可以把数据保存为csv/xls文件方便多次使用

注意:将股票列表从文件中读出来后,股票代码前的‘0’会被自动处理掉,在做循环下载数据时要将‘0’加上去。

自此股票列表就拿到了。

二、寻找合适财务数据接口

由于能够直接处理的文件格式为xml/csv/json/xls文件,因此我们尽量查找能够提供此类格式的文本的数据接口。另,我比较喜欢csv格式的文本,这种文本内容紧凑,可以说一个无用字节都没有。但是取得的数据可能并非自己所需的格式,所以需要将数据转换为自己需要的内容(为了说明数据清洗及转换过程,我这里专门选择了一个xls格式的财务接口)

2.1. 查找数据接口

很多财经网站都有提供下载财务报表的接口,由于我们已经拿到了所有股票列表,将股票代码依次传入下载接口,就可以获得所有股票财务数据了,我们先来查找可用的财务数据接口。

1) 打开任意财经网站股票专栏

2) 输入任意股票代码问财官网,比如,进入股票详情页

3) 查找诸如财务报表,财务数据,财务分析之类的字样,进入细分栏目。

4) 在这个栏目应该能够找到,下载或者导出之类的功能。现在重点来了,右键点击链接,选择复制链接地址如果,下载数据处是一个按钮而不是链接,可以使用先把数据下载下来,然后按Ctrl+J查看下载历史,就能看到下载地址了,如果还是不行,可能就要使用抓包工具之类的方式了。

5) 分析链接地址,查看传入股票代码的位置,比如,链接地址是:那么这个就是传入的股票代码了。

2.2. 通过程序下载数据

拿到接口地址后,我们可以通过程序下载数据了。

as ro

= ''='{co}01&exp=1'.(co=)

ct = ro.get().text

ct

看到一堆乱码(其实不是乱码,是xml,稍后就说说转化为csv文本)

三、数据的清洗及保存

1) 数据清洗

获取的数据结构太过复杂,我们还需要将其进行清洗及转换,之前我在《几行代码获取有效数据》这篇文章演示了数据的清洗,请参考原文,这里不再重复说明。

2) 数据保存

财务报表是有效期比较长的数据,为了避免每次使用时反复下载,可以将数据存储到本地。存储方式一般有文件方式或数据库方式。由于数据量不大,直接存为文件csv就可以了。不过为了方便取用,文件命名方式可以稍微注意下,比如命名为报表类型-股票代码.csv,这样以便于读取。

四、编写程序下载数据

#!/usr/bin/py# =. .Utils .Fi as as ro# 下载资产负债表def ():

num = 0

for c in :

='{co}01&exp=1'.(co=tcode(c))

ct = ro.get().text

='bs{co}.csv'.(co=tcode(c))

open(,'w').write(e2csv(ct))

num = num + 1

num

函数返回值为成功下载报表数目(这里没有做容错处理,如果下载量比较大,需要做容错处理,另外,还须解决程序异常退出后,下次再次进入后避免反复下载已经下载的数据,另外,为了避免IP地址被封,须在下载一个后加上一个延迟,这些内容就留给大家下面去研究了),测试一下代码:

显示成功下载了两个股票资产负债表。

根据以上内容,利润表和现金流量表也就可以下载了。

写到这里,财务数据采集篇就算结束了。下一篇是说说如何使用这些数据进行财务分析。



创新国学专业的命理易学平台。