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

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

3) 下载并保存数据

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

关于使用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运行,显示

这里是最新的0.8.2版。

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

stocks_df=t.get_stock_basics()stocks_df

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

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

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

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

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

自此股票列表就拿到了。

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

由于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

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

三、数据的清洗及保存

1) 数据清洗

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

2) 数据保存

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

四、编写Python程序下载数据

#!/usr/bin/py# filename=RPDownloader.pyfrom modules.Utils import e2csvfrom modules.Fi import tcodeimport pandas as Pdimport requests as ro# 下载资产负债表def downloadBSRP(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地址被封,须在下载一个后加上一个延迟,这些内容就留给大家下面去研究了),测试一下代码:

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

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

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

python抓取财务数据_Python与财务「上」——数据采集篇相关推荐

  1. python对财务的作用知乎_Python与财务「上」——数据采集篇

    内容提要1) 获取需要下载数据的股票代码列表 2) 寻找可以下载数据的数据接口 3) 下载并保存数据 拿手机看股票和股票证券交易背景 关于使用Python分析财务报表的场景,我认为主要有:1)同业分析 ...

  2. python与会计数据_Python与财务【上】--数据采集篇

    内容提要1) 获取需要下载数据的股票代码列表 2) 寻找可以下载数据的数据接口 3) 下载并保存数据 写在之前 之前我在<全A股市场财务指标数据汇总 - 知乎专栏>和<如何通过财务报 ...

  3. python抓取交易所_Python百行代码抓取美股三大交易所历史数据

    最近闲来无事,琢磨着去投资下美股,投资嘛,当然得先分析下市场行情个股行情啦, 分析就需要有数据,那么数据从哪里来呢,当然是从交易所官方网站获取咯.自己动手丰衣足食,于是花了点时间写个Python脚本来 ...

  4. python抓取教学_Python Selenium 实战教学:爬取每日天气

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:气象学渣 一.准备工作 1.Selenium的介绍与安装 Selen ...

  5. python抓取微信_python抓取搜狗微信公众号文章

    初学python,抓取搜狗微信公众号文章存入mysql mysql表: 代码: import requests import json import re import pymysql # 创建连接 ...

  6. python抓取pc端数据_「爬虫四步走」手把手教你使用Python抓取并存储网页数据!...

    爬虫是Python的一个重要的应用,使用Python爬虫我们可以轻松的从互联网中抓取我们想要的数据,本文将基于爬取B站视频热搜榜单数据并存储为例,详细介绍Python爬虫的基本流程.如果你还在入门爬虫 ...

  7. 小米10开始抓取日志怎么关闭_「教程」快来查查你的小米10是三星屏还是华星光电屏...

    小米10发布已经有很长一段时间了,在这期间,小米10系列也是好评不断,靠着高通骁龙865处理器,曲面屏,三星amoled屏幕,LPDDR5,UFS3.0,1亿像素等配置,一度被认为是真香机. 但是,小 ...

  8. python抓取交易所_python爬取上海石油天然气交易中心液化天然气交易数据并可视化分析...

    由于之前从事过石化行业,上海石油天然气交易中心成立虽较晚(2015年成立),但一直有关注,去年下半年由于大量供暖采取煤改气,还一个没有霾笼罩的冬天,因此出现了天然气大幅涨价供不应求的状况,闲着没事就用 ...

  9. python抓取视频_python实现超简单的视频对象提取功能

    视频对象提取 与其说是视频对象提取,不如说是视频颜色提取,因为其本质还是使用了OpenCV的HSV颜色物体检测.下面话不多说了,来一起看看详细的介绍吧. HSV介绍 HSV分别代表,色调(H:hue) ...

最新文章

  1. StringBuilder与 StringBuffer
  2. 中国高校毕业生即将加速蓝领化
  3. hdu1353 小暴力
  4. 【Smartform】开发中报SSFCOMPOSER154错误原因分析
  5. Fabricjs在Canvas上使用路径Path绘制不规则图形
  6. mysql scott用户_在mysql中创建 oracle scott 用户的四个表及插入初始化数据
  7. MacBook 推出移动硬盘时总是提示有程序在使用它,如何解决?
  8. Servlet的文件上传
  9. 泉州海事学校计算机,泉州海事学校寝室图片、校园环境好吗?
  10. [Windows Phone] 自己动手实现Telerik公司的LayoutTransform动画效果
  11. dell pc restore 修复计算机,dell 恢复出厂系统 修复计算机选项失效
  12. MS17-010 永恒之蓝漏洞利用方式
  13. Java开发最容易踩的十个大坑,每条都是教训
  14. matlab求函数在区间内最大值与最小值
  15. 萝卜小姐-Handler之系列sendMessage学习
  16. 「hdu6638」Snowy Smile【稀疏矩阵最大子矩阵和】
  17. 小米9se开发版系统回刷MIUI稳定版系统
  18. Notes 20180311 : String第三讲_深入了解String
  19. 在线识别图片文字,分享识别技巧
  20. 20170321多益在线笔试(二笔)

热门文章

  1. bsd 运行Linux软件,BSD操作系统 FreeBSD
  2. RedHat AS5下安装tmail4.6
  3. apcups电源型号与分类
  4. 长文 | 2023届校招算法岗知识总结
  5. 全球与中国吸油烟机行业市场规模调研及未来前瞻报告2022-2028年
  6. 习SQL语句之SQL语句大全
  7. 记一次gitbook的安装
  8. 富田刹车马达特点和用途
  9. win8重装系统步骤
  10. 2021-06-15常见网安设备默认口令大全