Skip to main content

抓取和解析股票历史数据

项目描述

https://badge.fury.io/py/pystock-crawler.png https://travis-ci.org/eliangcs/pystock-crawler.png?branch=master https://coveralls.io/repos/eliangcs/pystock-crawler/badge.png?branch=master

pystock-crawler是一个用于抓取美股历史数据的实用程序,包括:

  • NASDAQ.com在纽约证券交易所、纳斯达克或美国证券交易所上市的股票代码

  • 雅虎财经的每日价格

  • 来自SEC EDGAR的 10-Q 和 10-K 文件 (XBRL) 的基本原理

示例输出

纽约证券交易所股票代码:

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
...

安装

先决条件:

  • 蟒蛇 2.7

pystock-crawler基于Scrapy,因此您还需要为 Scrapy 及其依赖项安装lxmllibffi等先决条件。例如,在 Ubuntu 上,您可以像这样安装它们:

sudo apt-get update
sudo apt-get install -y gcc python-dev libffi-dev libssl-dev libxml2-dev libxslt1-dev build-essential

有关详细信息,请参阅Scrapy 的安装指南

安装先决条件后,您可以使用 pip安装pystock-crawler

(sudo) pip install pystock-crawler

快速开始

示例 1.获取按日期排序的 Google 和 Yahoo 的每日价格:

pystock-crawler prices GOOG,YHOO -o out.csv --sort

示例 2.获取./symbols.txt中列出的所有公司的每日价格 :

pystock-crawler prices ./symbols.txt -o out.csv

示例 3.获取 Facebook 在 2013 年的基本面:

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

示例 5.获取 NYSE、NASDAQ 和 AMEX 中的所有股票代码:

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符号抓取股票代码列表

  • pystock-crawler价格抓取每日价格

  • pystock-crawler报告抓住了基本面

<exchanges>是一个逗号分隔的字符串,用于指定要包含的证券交易所。Current、NYSE、NASDAQ 和 AMEX 均受支持。

pystock-crawler符号的输出文件可用于pystock-crawler价格pystock-crawler报告 命令中的<symbols> 参数。

<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价格pystock-crawler报告,输出格式为 CSV。

-l是爬取日志所在的位置。如果未指定,日志将转到标准输出。

默认情况下,爬虫使用当前目录作为工作目录。如果您不想使用当前目录,可以使用-w 选项指定它。爬虫将 HTTP 缓存保存在工作目录下名为.scrapy的目录中。缓存可以通过避免下载相同的网页来节省您的时间。但是,缓存可能非常大。如果您不需要它,只需在完成爬网后删除.scrapy目录即可。

-b选项仅适用于pystock-crawler报告命令。它允许您将大型符号列表拆分为较小的批次。这实际上是未解决的错误 (#2) 的解决方法。通常您不必指定此选项。默认值(500)工作得很好。

默认情况下,输出文件中的行是任意顺序的。使用 --sort选项按符号和日期对它们进行排序。但是如果你有一个大的输出文件,不要使用--sort,因为它会很慢并且会消耗很多内存。

开发者指南

安装依赖

pip install -r requirements.txt

运行测试

安装测试要求:

pip install -r requirements-test.txt

然后运行测试:

py.test

这将从 SEC EDGAR即时下载测试数据(大量 XML/XBRL 文件),因此需要一些时间和磁盘空间。测试数据保存到pystock_crawler/tests/sample_data目录。下次运行测试时可以重复使用它。如果您不需要它们,只需删除sample_data目录即可。

下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

pystock-crawler-0.8.2.tar.gz (21.5 kB 查看哈希

已上传 source

内置分布

pystock_crawler-0.8.2-py2-none-any.whl (24.3 kB 查看哈希

已上传 2 7