一个轻量级的工具,从雅虎财经抓取股票数据。

rookie-stock-crawler的Python项目详细描述


PY股票爬虫

一个多线程的网络爬虫,从雅虎财经检索股票数据。

用法

非常容易安装!!!不需要额外的c或二进制libs!!!

仅支持Python3。

pip install rookie-stock-crawler

使用四行创建多线程爬虫程序,并将数据作为json文件保存到本地。

fromrookie_stock_crawlerimportStockCrawlersc=StockCrawler(['MSFT','GOOG','AMZN','AAPL'])sc.start()sc.save_all()

爬网程序对象是可访问的:

foriteminsc:print(item.get())

设置

类stockcrawler(符号列表,并发=5,自动保存=false,自动睡眠=none)[Source]

符号列表

包含要爬网的符号的列表。该符号必须存在于雅虎财经或它会打印一些消息通知你(不会引发异常)。

并发

一个整数。程序将一次启动以对数据进行爬网的进程数。每个进程检索一个库存。

自动保存

truefalse。如果设置为true,则爬网后股票数据将立即保存。

自动睡眠

nonetrue或任何正整数。此参数决定在Yahoo开始返回404响应(这意味着您的客户端已达到其访问限制)之后,爬虫程序将休眠多少秒。

如果设置为true,默认情况下它将睡眠600秒。

实用程序

整个包装设计成可拆卸的。所有方法和对象都可以独立导入和使用。

类库存[Source]

存储在爬虫程序中的主对象。上面代码中的变量item是一个stock对象。这意味着您可以直接访问其属性或使用其他方法。

fromrookie_stock_crawler.stockimportStockst=Stock('AAPL')st.retrieve()st.save()print(st.get())

这是一个创建没有多线程的单个小型爬虫程序的示例。

新手股票爬虫程序.实用程序[Source]

当我们继续分解模块时,我们可以导入用于检索数据的stock方法。它们工作起来几乎像一个纯功能(只要你的家庭路由器没有爆炸)。

fromrookie_stock_crawler.utilsimportget_financial,get_statistic,get_historicalsymbol='AAPL'print(get_financial(symbol))print(get_statistic(symbol))print(get_historical(symbol))

所有方法都返回一个长度为2的元组。第一个元素是股票数据(列表或dict),第二个元素是数据的最新日期(例如,苹果公司的最新财务报告于2018年9月29日发布)。

例外情况

此包不提供任何自定义例外。但是,在爬网过程中引发的所有异常都会被捕获并用前缀标记打印,如“[error]”。这不是为了中断爬网,在这种情况下,如果不将auto_save选项设置为true,所有数据都将丢失。

在爬网之外引发的所有异常仍将中断程序。

数据格式

几乎是来自Yahoo Finance的原始JSON数据(从网页源代码中解析)。

要查看示例,请单击here

数据格式转换工具将在以后的版本中引入。

特殊说明

雅虎财务不再维护其api或yql查询。因此,我们无法知道接收频率的确切极限。爬虫程序实际上是通过直接向服务器发送请求来获取数据的,这与打开浏览器并访问雅虎网站完全相同。

换句话说,你不能在短时间内抓取大量数据。对于个人开发者和爬虫爱好者来说已经足够了。但是如果你想更快,这个包还提供了一个分布式版本,可以在不同的服务器上运行。整个解决方案包括一个django服务器和一个前端。

如果您感兴趣,您可以访问我的其他RePOS,或者您可以尝试其他方法,如伪造的UpAgent(不工作)或全局代理(也可能不工作),等等。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java使用唯一的按钮标签单击按钮   代码生成如何使用Java codeModel为数组的特定索引赋值   java如何批量执行Camel SQL插入   java iText 7将ltv添加到现有签名   内存管理Java应用程序突然停止几天后(810)   带MySQL的java注册表单JavaFX在intellij中失败   如何使用eclipse为windows azure java项目启用远程调试   一种通用的java输入输出设计模式   java Android XML(RSS)忽略引号(“”)   java帮助:安卓中的8 X 10 2维按钮数组   java启动Android项目   JWrapper构建java应用程序   java如何在Android应用程序中设置基于日期/时间的默认页面加载?   java循环程序在完成后返回到起点   java Hibernate:更好的整体类还是多类映射?   回溯数独解算器的递归问题[Java]   java查找类用法   java如何在SpringWebFlow中将多个模型绑定到一个视图?