以下哪个不是python财经数据接口工具_Python与财务「上」——数据采集篇

内容提要

1) 获取需要下载数据的股票代码列表
2) 寻找可以下载数据的数据接口
3) 下载并保存数据

72361e7b56320f5d54e40051ca57b4cd.png

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

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

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

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

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

财务数据的采集

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

1) 怕什么?

2) 到哪里去爬?

3) 数据清洗、储存?

一、获取所有股票代码

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

1)看看是tushare是否装好:

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

import tushare as t t.__version__

输入后按SHIFT+ENTER运行,显示

3577bcbe6317c2ee51c2647ae7563c8d.png

这里是最新的0.8.2版。

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

stocks_df=t.get_stock_basics()stocks_df

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

3d0ec975fdca973999b42f1767598022.png

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

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

f43580a6d5280723f05988c7f306b53e.png

如果你对一些新股不敏感,可以把数据保存为csv/xls文件方便多次使用

de4b0e2159799b64b6bd7e407a2c8af6.png

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

bd3b85d1a25067fa314f4c1727ffabe9.png

自此股票列表就拿到了。

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

由于Python能够直接处理的文件格式为xml/csv/json/xls文件,因此我们尽量查找能够提供此类格式的文本的数据接口。

另,我比较喜欢csv格式的文本,这种文本内容紧凑,可以说一个无用字节都没有。但是取得的数据可能并非自己所需的格式,所以需要将数据转换为自己需要的内容(为了说明数据清洗及转换过程,我这里专门选择了一个xls格式的财务接口)

2.1. 查找数据接口

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

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

2) 输入任意股票代码,比如600660,进入股票详情页

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

4) 在这个栏目应该能够找到,下载或者导出之类的功能。现在重点来了,右键点击链接,选择复制链接地址

如果,下载数据 处是一个按钮而不是链接,可以使用Chrome先把数据下载下来,然后按Ctrl+J查看下载历史,就能看到下载地址了,如果还是不行,可能就要使用抓包工具之类的方式了。

5) 分析链接地址,查看传入股票代码的位置,比如,链接地址是:http://www.stock.com/report.jsp?id=600660 那么这个600660就是传入的股票代码了。

2.2. 通过程序下载数据

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

import requests as ro stock_code = '600660'bs_url='http://soft-f9.eastmoney.com/soft/gp15.php?code={co}01&exp=1'.format(co=stock_code) ct = ro.get(bs_url).text ct

876a0a263a116cf0a0f8793986410aa6.png

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

三、数据的清洗及保存

1) 数据清洗

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

301aa2754273006e46ca57365bc7737a.png

2) 数据保存

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

四、编写Python程序下载数据

#!/usr/bin/py# filename=RPDownloader.pyfrom modules.Utils import e2csvfrommodules.Fi import tcodeimport pandas as Pdimport requests as ro# 下载资产负债表defdownloadBSRP(stocklist): num = 0 for c in stocklist: bs_url='http://soft-f9.eastmoney.com/soft/gp15.php?code={co}01&exp=1'.format(co=tcode(c)) ct = ro.get(bs_url).text to_file='bs{co}.csv'.format(co=tcode(c)) open(to_file,'w').write(e2csv(ct)) num = num + 1 return num

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

62d181f88b56fac85b34008ec1690455.png

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

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

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

会计研究中文本数据的重要性显着增加。 为了帮助研究人员理解和使用文本数据,本专着定义和描述了文本数据的常用度量,然后演示了使用 Python 编程语言收集和处理文本数据。 该专着充满了示例代码,这些代码复制了最近研究论文中的文本分析任务。在专着的第一部分中,我们提供了 Python 入门指南。 我们首先描述 Anaconda,它是 Python 的一个发行版,它提供了文本分析所需的库及其安装。 然后,我们介绍了 Jupyter notebook,这是一种改进研究工作流程并促进可复制研究的编程环境。 接下来,我们将教授 Python 编程的基础知识,并演示使用 Pandas 包中的表格数据的基础知识。专着的第二部分重点介绍会计研究中常用的特定文本分析方法和技术。 我们首先介绍正则表达式,这是一种用于在文本中查找模式的复杂语言。 然后我们将展示如何使用正则表达式从文本中提取特定部分。 接下来,我们介绍将文本数据(非结构化数据)转换为表示感兴趣变量(结构化数据)的数值度量的想法。 具体来说,我们介绍了基于字典的方法:1) 测量文档情绪,2) 计算文本复杂度,3) 识别前瞻性句子和风险披露,4) 收集文本中的信息量,以及 5) 计算不同片段的相似度文本。 对于这些任务中的每一个,我们都引用了相关论文并提供了代码片段来实现这些论文中的相关指标。最后,专着的第三部分侧重于自动化文本数据的收集。 我们介绍了网络抓取并提供了从 EDGAR 下载文件的代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值