抓取和解析股票历史数据
pystock-crawler的Python项目详细描述
pystock-crawler是一个用于抓取美国股票历史数据的实用程序, 包括:
- 纽约证交所、纳斯达克或美国运通上市的股票代码来自NASDAQ.com
- 每日价格从Yahoo Finance
- 从10-q和10-k文件(xbrl)看SEC EDGAR
示例输出
纽约证券交易所股票代码:
DDD 3D Systems Corporation MMM 3M Company WBAI 500.com Limited ...
苹果的每日价格:
symbol,date,open,high,low,close,volume,adj_close AAPL,2014-04-28,572.80,595.75,572.55,594.09,23890900,594.09 AAPL,2014-04-25,564.53,571.99,563.96,571.94,13922800,571.94 AAPL,2014-04-24,568.21,570.00,560.73,567.77,27092600,567.77 ...
谷歌的基本原理:
symbol,end_date,amend,period_focus,fiscal_year,doc_type,revenues,op_income,net_income,eps_basic,eps_diluted,dividend,assets,cur_assets,cur_liab,cash,equity,cash_flow_op,cash_flow_inv,cash_flow_fin GOOG,2009-06-30,False,Q2,2009,10-Q,5522897000.0,1873894000.0,1484545000.0,4.7,4.66,0.0,35158760000.0,23834853000.0,2000962000.0,11911351000.0,31594856000.0,3858684000.0,-635974000.0,46354000.0 GOOG,2009-09-30,False,Q3,2009,10-Q,5944851000.0,2073718000.0,1638975000.0,5.18,5.13,0.0,37702845000.0,26353544000.0,2321774000.0,12087115000.0,33721753000.0,6584667000.0,-3245963000.0,74851000.0 GOOG,2009-12-31,False,FY,2009,10-K,23650563000.0,8312186000.0,6520448000.0,20.62,20.41,0.0,40496778000.0,29166958000.0,2747467000.0,10197588000.0,36004224000.0,9316198000.0,-8019205000.0,233412000.0 ...
安装
先决条件:
- python 2.7版
pystock-crawler基于Scrapy,因此您还需要安装 先决条件,例如lxml和libffi对于scrapy及其依赖项。打开 比如ubuntu,你可以这样安装:
sudo apt-get update sudo apt-get install -y gcc python-dev libffi-dev libssl-dev libxml2-dev libxslt1-dev build-essential
有关详细信息,请参见Scrapy’s installation guide。
安装先决条件后,可以使用 pip:
(sudo) pip install pystock-crawler
快速启动
example 1.获取按日期排序的谷歌和雅虎的每日价格:
pystock-crawler prices GOOG,YHOO -o out.csv --sort
example 2.获取中列出的所有公司的每日价格 ./symbols.txt:
pystock-crawler prices ./symbols.txt -o out.csv
example 3.获取2013年Facebook的基本信息:
pystock-crawler reports FB -o out.csv -s 20130101 -e 20131231
示例4.获取./nyse.txt中所有公司的基础知识并直接 日志到./crawling.log:
pystock-crawler reports ./nyse.txt -o out.csv -l ./crawling.log
example 5.获取纽约证交所、纳斯达克和美国运通的所有股票代码:
pystock-crawler symbols NYSE,NASDAQ,AMEX -o out.txt
用法
键入pystock-crawler-h查看命令帮助:
Usage: pystock-crawler symbols <exchanges> (-o OUTPUT) [-l LOGFILE] [-w WORKING_DIR] [--sort] pystock-crawler prices <symbols> (-o OUTPUT) [-s YYYYMMDD] [-e YYYYMMDD] [-l LOGFILE] [-w WORKING_DIR] [--sort] pystock-crawler reports <symbols> (-o OUTPUT) [-s YYYYMMDD] [-e YYYYMMDD] [-l LOGFILE] [-w WORKING_DIR] [-b BATCH_SIZE] [--sort] pystock-crawler (-h | --help) pystock-crawler (-v | --version) Options: -h --help Show this screen -o OUTPUT Output file -s YYYYMMDD Start date [default: ] -e YYYYMMDD End date [default: ] -l LOGFILE Log output [default: ] -w WORKING_DIR Working directory [default: .] -b BATCH_SIZE Batch size [default: 500] --sort Sort the result
有三个命令可用:
- pystock-crawler symbolsgrabs ticker符号列表
- pystock-crawler prices获取每日价格
- pystock-crawler reports抓住基本面
<exchanges>是一个逗号分隔的字符串,指定证券交易所 你想包括在内。目前,纽约证交所、纳斯达克和美国运通都受到支持。
pystock-crawler symbols的输出文件可用于<symbols>pystock-crawler prices和^{tt11}中的参数$ 命令。
<symbols>可以是用逗号分隔的内联字符串或文本文件 逐行列出符号的。例如,内联字符串可以是 有点像AAPL,GOOG,FB。文本文件可能如下:
# This line is comment AAPL Put anything you want here GOOG Since the text here is ignored FB
使用-o指定输出文件。对于pystock-crawler symbols 命令时,输出格式是一个简单的文本文件。为了 pystock-crawler prices和pystock-crawler reports输出格式 是CSV。
-l是爬网日志的目的地。如果未指定,日志将转到 标准输出。
默认情况下,爬网程序使用当前目录作为工作目录。 如果不想使用当前目录,可以使用^{tt24}指定它$ 选择。爬网程序将http缓存保存在名为.scrapy的目录下 工作目录。缓存可以避免下载 同样的网页。然而,缓存可能相当大。如果你不需要它, 完成爬网后,只需删除.scrapy目录。
-b选项仅对pystock-crawler reports命令可用。IT 允许您将大型符号列表拆分为较小的批处理。这实际上是 未解决的错误的解决方法(2)。通常你不必指定 这个选项。默认值(500)工作正常。
默认情况下,输出文件中的行按任意顺序排列。使用 --sort按符号和日期排序的选项。但是如果你有一个大的 输出文件,不要使用–sort,因为它会很慢,占用大量内存。
开发人员指南
安装依赖项
pip install -r requirements.txt
运行试验
安装测试要求:
pip install -r requirements-test.txt
然后运行测试:
py.test
这将从 SEC EDGAR正在运行,因此需要一些时间和磁盘空间。测试 数据保存到pystock_crawler/tests/sample_data目录。可能是 在下次运行测试时重用。如果你不需要,就删除 sample_data目录。