Python环境下金融交易数据的API调用

来源 :中国集体经济 | 被引量 : 0次 | 上传用户:lajiub1987
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
   摘要:随着股票/期货市场的快速发展,股票/期货相关数据的获取是第一个需要解决的问题。通过API调用来获取数据能优化数据获取流程,节约数据获取时间。文章基于股票/期货API的沪深港股票/期货交易数据调用方法,分析对比其與网络爬虫数据调用方法的异同。由于单独使用网络爬虫或API调用不能完成数据准确完整的调用。因此,提出一种API调用和网络爬虫相结合的方法,从而解决API调用数据次数受限,网络爬虫调用数据过程复杂等问题,综合两种方法的优点以实现数据高效完整的获取。
   关键词:API;API调用;数据获取;网络爬虫
   19世纪70年代,Digital Research公司创造出了世界上第一个实用的软件API(Application Programming Interface,应用程序接口),这个API仅仅由20种简单的函数组成,但就是这个API的出现改变了整个计算机领域。之后比尔·盖茨等人复制了其API开发出MS-DOS操作系统,添加了一些简单的特性之后,将其推上了软件开发的主导地位。
   1981年,微软公司发布Windows操作系统,但其自己开发出来的Windows API不能满足当时使用需求,大量的开发人员投入到Windows程序的开发中来,同时加快了API的发展进程。
   1988年,微软公司购买了Alan Cooper开发的可视编程语言:Ruby。Ruby满足了名为VBX的软件API,这种API可以让开发人员动态地扩展Visual Basic功能。
   除了微软之外,Unix世界也创造出可以在网络之间自由通信的API,这就是TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)。到了20世纪90年代,Marc Andreessen推出了世界上第一个Web浏览器:Mosaic。正是因为有了TCP/IP API,Netscape可以在自己的计算机之外查找其他网络上的计算机,并且提取其中的文件。
   今天的软件开发者很大一部分是在开发Web应用程序, Web领域的开发者们不会对Web本身有太多的研究,所以这些开发者需要把其他开发者预先编写的部分组合起来,所以他们比以前更多地依赖于为其编写的软件API。同时API在金融领域也发挥着它的优势。由于互联网技术的不断发展,股票/期货的交易数据也呈现着快速增长的趋势。目前大量股票/期货交易数据为政府、组织机构、企业所拥有,但是社会层面对股票/期货交易数据的需求也越来越强烈,越来越多的团体或个人需要按照自己的交易习惯定置个性化交易软件。股票/期货交易数据的获取量大、股票/期货数据更新频繁、数据传播迅速,并且数据获取用户相对集中,所以用API来调用股票/期货数据既满足了用户对股票/期货数据的需求同时还节省了数据获取时间。
   一、API概述
   API是指操作系统预先把这些复杂的操作写在一个函数里面,编译成一个动态链接库,跟随操作系统一起发布,并附上使用文档说明,使用者只需要简单地调用这些函数就可以完成一些复杂的工作。API具有以下性质,一是可用性,是指用户能否便捷运用API来完成指定任务,是衡量API质量的重要指标。二是稳定性,代表着API的质量,稳定的API可以提高调用数据的准确性完整性。三是安全性,API的不规范使用可能会导致数据在调用过程中发生错误,致使返回给用户的数据不准确甚至给操作系统带来安全风险。API按用户不同权限提供数据服务其中包括:一是支持内容创建,API 允许用户定制、获取、上传数据;二是禁止内容创建,API 只允许用户定制、获取数据,不允许对数据进行编辑更改。大部分开放给普通用户的API都禁止用户对其创建内容,主要原因是防止权威数据的漏传、误传甚至丢失,例如用户获取实时股票/期货交易数据。
   API 调用是通过 API 有条件的精确获取用户所需要的数据,调用方式灵活方捷、反映速度快。
   二、API调用股票/期货数据的方法与实现
   API调用数据原理如图1所示。
   (一)API接口的选择
   获取股票/期货数据的API接口主要有:数据超市、雅虎、新浪、Google等。
   由于计算机技术的发展以及数据获取手段的普及,现在出现了许多数据超市,可以更加高效快捷的获取股票/期货数据,不仅节约了获取者的时间,同时也有利于获取更多准确及时的数据。下面介绍三种数据接口从中选择一个作为接下来实验的数据接口。
   1. 雅虎
   缺点:部分美国假期数据缺失;调用数据的次数有限制,超过规定次数就会被警告并封锁IP地址。优点:数据比较权威,准确性有保障,可以获取其他国家市场数据;返回数据解析方便,较好提取。
   2. 新浪
   缺点:股票/期货历史数据不够完整。优点:速度非常快;返回数据容易处理;可以按照使用者要求获取单一方面的数据。
   3. Google
   缺点:数据都是从新浪获取,获取自由度低。优点:数据准确可靠。
   综合以上接口的优缺点,通过对比分析选择数据更加全面完整,获取范围更加广泛的雅虎接口作为实验中的API接口。
   (二)API调用股票/期货数据
   从新浪财经网络接口直接调用股票/期货数据。
   基本步骤:import requests
   r=requests.get("http://hq.sinajs.cn/list=股票/期货代码")
   print(r.text)
   注意:上证股票在输入股票代码时要在前面加上sh,深圳股票在股票代码前面加上sz,港股在股票代码前面加上hk    下面分别调取了沪股浦发银行sh00000、深股平安银行sz000001、以及港股颐海国际hk01579、海底捞hk06862的股票交易数据和玉米、白银、黄金的期货交易数据。
   浦发银行股票交易数据:
   import requests
   r=requests. get("http://hq. sinajs. cn/list-s600000")
   print (r. text)
   var hq_ str_sh600000="浦发银行,12. 170, 12. 230, 12. 040, 12. 220, 12. 010, 12.030, 12. 040, 38092059, 460234691. 000, 62300, 12.030,239567, 12. 020, 729627, 12.010, 1215100, 12. 000, 2099000,11. 990, 82800, 12. 040, 192900, 12. 050, 390800 12. 060, 238700, 12. 070, 296100, 12. 080, 2019-11-20, 15:00:00, 00,"
   平安银行股票交易数据:
   import requests
   r=requests. get("http://hq. sina js. cn/list=sz000001")
   print (r. text)
   var hq_str_sz000001="平安银行16.300, 16.410, 15.850, 16.300, 15.770, 15.850, 15.860, 172438353, 2747598383. 400, 303297, 15. 850, 133200, 15. 840, 64083, 15. 830, 36600, 15. 820, 84700, 15. 810, 36200, 15. 860, 256000 15. 870, 1405307, 15. 880, 51100, 15. 890, 166385, 15. 900, 2019-11-20,15:00:03, 00"
   颐海国际股票交易数据:
   import requests
   r=requests. get("http://hq. sina js. cn/list=hk01579")
   print (r. text)
   var hq_str_hk01579="NULL,颐海国际,50.400, 50.400, 51.750,49.500, 5l.350,0.950, 1.885, 51.300, 51.350, 89306132, 1760506, 84.180, 0.000,56.050, 18.020,2019/11/20, 16:08"
   海底捞股票交易数据:
   import requests
   r=requests. get ("http://hq. sina js. cn/list =hk06862")
   print (r. text)
   var hq_str_hk06862="NULL, 海底捞35.000, 35.000, 35.400, 34.850, 35.300, 0.300, 0.857, 35.200, 35.300, 89417573, 2541754, 93.634, 0.000, 39.000, 16. 420, 2019/11/20, 16:08"
   玉米期货交易数据:
   import requests
   r=requests. get ("http://hq. sina js. cn/list=C0")
   print(r. text)
   var hq_str_C0="玉米连续,150040, 1857. 00,1857. 00,1844. 00, 1854. 00, 1845. 00. 1846 00, 1846. 00, 1848. 00, 1857. 00, 2316, 165, 1189024,473098,连,玉米,2019-11-20, 0, 1865. 000, 1833.000, 1868.000, 1833.000, 1895. 000, 1823. 000, 1901.000, 1810 000, 16.838"
   白银期货交易数据:
   import requests
   r=requests. get("http://hq. sina js. cn/list=AG0")
   print (r. text)
   var hq_str_ AG0="白银连续, 145955, 4170. 00, 4192. 00, 4132. 00, 4185. 00, 4169. 00, 4170. 00, 4170. 00, 4165. 00, 4147. 00, 127, 7, 624046, 1391504, 滬,白银, 2019-11-20, 0, 4192. 000, 4091. 000, 4280. 000, 4036. 000, 4487. 000, 4036. 000, 4843. 000, 4036. 000, 78. 485 "
   黄金期货交易数据:
   mport requests
   r=requests. get("http://hq. sina js. cn/list =AU0")    print(r. text)
   var hq_ str_AU0="黄金连续,145954, 337.85,339. 55, 336. 70, 388.30, 339.15, 339. 40, 339.15, 0.00, 337. 75, 25, 6, 169804, 78028,沪,黄金, 2019-11-20,0, 339.550,334.600, 339.550, 327. 600, 347.750, 327. 600, 363. 850, 327. 600, 3.429"
   三、API调用与网络爬虫对比分析
   (一)关于API调用数据方法的分析
   API调用数据方法的普及主要原因有:
   API 提出了一种代码的编制复用机制,用户可以直接使用已有的API接口,复用他人编制出来的代码完成数据的调用。
   API开发出一种信息隐藏的机制,用户在不知道具体细节的情况下,就可以完成相应的数据调用功能。
   API 提供了访问某些数据资源的接口,用户通过这些API接口就能直接访问到想要的资源,不用进行接口的寻找,节省数据调用时间。
   API调用数据支持多项目、多模块的数据调用,同时支持私有项目、公开项目、加密项目的数据调用。
   API调用数据支持协同管理,支持添加项目成员,并且可精确控制每个成员的权限。
   API接口支持普通接口、restfull、josn、xml等各种接口的数据的调用,接口返回数据也支持word、pdf格式下载,可单个下载也可按模块下载。
   通过调用 API 接口可以实现股票/期货数据便捷高效的获取与解析。但所有的数据提供商都不会无条件无限制的提供给普通用户完整数据,例如在股票/期货数据获取过程中,有许多拥有重要查询功能的 API 是不提供给普通用户的,同时对于开放的 API,一次调用的返回结果数量有限制。同时因为 API 接口自身的复杂性以及数据本身的缺失和疏漏等原因,使用者经常会对API进行错误的使用,导致调用数据和现实不符合甚至出现重大误差。因此使用 API 调用数据的方法只能解决数据获取中的一部分问题。
   (二)API調用数据与网络爬虫对比分析
   爬虫指的是:向网站发起请求,获取资源后分析并提取有用数据的程序。
   网络爬虫的基本原理:发起请求,使用http库向需要的数据所在的网站发起请求,即发送一个Request;获取响应内容,如果服务器能正常响应,则会得到一个返回数据;解析返回数据,通过第三方解析返回的数据,从中获取所需要的部分;保存数据。将提取的有用的数据保存到本地。
   与基于API 的数据调用相比,基于网络爬虫的数据调用效率与性能有明显差距,同时网络爬虫调用数据还要解决网页的模拟登录问题,调用过程复杂。但是通过网络爬虫进行数据调用,能够解决用户反复调用API接口带来的数据量限制等问题,使能够调用的数据量明显增加,调用过程稳定。
   但是在只需要部分特定的数据时,基于网络爬虫的数据调用方法速度较慢,在处理数量相同的信息时需要解决更多的问题,在数据的返回解析方面也更加复杂。而通过API调用数据可以一次性完成数据调用、返回、解析、存储,不需要像网络爬虫获取数据一样,一个一个页面解析提取的数据,同时API调用返回数据大小较小,速度快使调用更有效率。
   四、对数据调用方法的思考
   API 调用数据的抓取方式效率高,但因为服务器限制,不能获得完整数据集,而基于网络爬虫的数据获取方案可以获得较大的数据,但无法一次性抓取用户想要的数据,获取效率比较低。所以需要将两者结合起来,以实现最佳数据抓取获取效果。
   首先,计算需要抓取的数据大小,如果需要获取的数据量小于用户使用的API接口规定访问的最大限制次数,则自动调用API接口获取数据。反之就使用网络爬虫获取用户所需要的数据。如果在使用API接口的过程中,累计数据量超过了接口所允许的最大访问次数,这时也可以自动转换为网络爬虫获取剩下部分的数据。获取完整数据后将数据放入一个数据库中,数据库自动检测对比数据的真实准确性,从而输出用户所需要的数据。
   五、结语
   本文主要介绍一种基于API接口获取股票/期货数据的方法,将其与传统网络爬虫获取数据方法进行对比。提出两者相结合的方法,一方面弥补了API调用数据的调用次数限制问题,另一方面解决了网络爬虫调用数据需要模拟登陆和大量的页面解析的问题。结合两者优点提高调用效率保证数据的准确性与完整性,但是从大数据的发展角度出发,在不考虑API访问次数限制的情况下,基于API的数据获取方法在获取效率方面还有很大的发展空间,之后的研究可以从如何降低API接口的限制访问次数入手提出更加符合要求方便快捷的数据获取方法。
   参考文献:
   [1]廉捷,周欣,曹伟,刘云.新浪微博数据挖掘方案[J].清华大学学报(自然科学版),2011,51(10):1300-1305.
   [2]冰雨梦.软件接口的历史和未来[J]. 中文信息:程序春秋,2002(06):18-19.
   [3]李正,吴敬征,李明树.API使用的关键问题研究[J].软件学报,2018,29(06):1716-1738.
   [4]赵前东,叶猛.微博热点话题检测系统的设计与实现[J].电视技术,2013(03):211-214.
   [5]王佳秋.基于用户行为及关系的微博电商企业影响力度量[D].哈尔滨:哈尔滨商业大学,2013.
   [6]徐雁飞,刘渊,吴文鹏.社交网络数据采集技术研究与应用[J].计算机科学,2017(01):277-282.
   [7]石磊.新浪API与网络爬虫结合获取数据的研究与应用[J].中国电子商务,2013(22):58-59.
   [8]李良.基于Python的测井数据校验对比[J].信息系统工程,2014(06):142.
   [9]余斌.基于Bottle的Python网络应用开发[J].无线互联科技,2014(06):29+103.
   [10]刘海房,莫世鸿,龚振,范冰冰.面向API调用的开放数据存储管理研究[J].计算机应用与软件,2018,35(08):93-97.
   (作者单位:昆明理工大学公共安全与应急管理学院)
其他文献
由中华医学会骨科分会足踝外科学组主办,复旦大学附属华山医院承办的全国足踝外科高峰论坛暨第四届足踝外科应用解剖与手术技术学习班将于2010年4月8至11日上海召开。会议将成立中华医学会骨科分会足踝外科医师培训中心。邀请邱贵兴院士、王正义教授、姜保国教授、张建中教授、顾湘杰教授、俞光荣教授、徐向阳教授、桂鉴超教授、唐康来教授等足踝外科专家进行有关热点、难点的专题讲座,与各位同道就共同关心的问题进行交流
期刊
摘 要:在新课改教育理念下,大力倡导生活化教育理念的落实,融入生活元素成为各个教育阶段各科教学的共同追求.物理作为初中教育阶段的一门重点学科,同现实生活之间同样有着密切联系,教师需主动融入生活元素,优化物理课堂,促进学生高效学习.  关键词:生活元素;初中物理;课堂教学  中图分类号:G632 文献标识码:A 文章编号:1008-0333(2021)32-0066-02  收稿日期:202
摘 要:物理是初中教育体系中的一门常设学科,有着自身的特殊性,随着新课程改革的持续推进,对初中物理教学提出更高的要求,教师既需帮助学生掌握理论知识、实验操作技巧和解决能力,还要培养他们的思维能力,其中创新思维最为重要,据此优化物理课堂.  关键词:创新思维;初中物理;课堂教学  中图分类号:G632 文献标识码:A 文章編号:1008-0333(2021)32-0068-02  收稿日期:
由《中华骨科杂志》编辑部主办,南京医科大学第一附属医院承办的第二届髋、膝关节周围骨折研讨会暨学习班定于2010年3月26至28日在南京召开。届时将聘请国内著名学者及专家讲授髋、膝关节周围骨折诊断及治疗的最新技术及最新进展,包括髋臼骨折、股骨转子间骨折、股骨颈骨折、股骨髁上骨折、胫骨平台骨折、髋、膝关节置换术后假体周围骨折等。参会者可获得国家级I类继续医学教育学分8分。
期刊
摘要:自2016年5月1日起,建筑业企业开始全面实施“营改增”。从理论上来说,由于增值税只对流转环节中的增值部分进行征税,相较于原来的营业税,避免了重复征税的问题,降低了企业的税负,但在现实中,建筑业企业由于管理模式陈旧等原因,导致企业税负不降反升,甚至会因触碰法律的底线而带来税务风险。正是在这种背景下,建筑业企业越来越意识到税务筹划的重要性。合理的税务筹划可以帮助企业降低税负,增加利润。基于此,
摘要:民生问题关系到社会的稳固,关系到国家的长治久安。我国已全面建成小康社会,历史性地解决了绝对贫困问题,但在民生领域仍存在着明显短板。持续保障和改善民生,仍是新发展阶段工作的重中之重。法治是一种重要的社会治理手段,民生问题的解决离不开法治的保障。用法治保障和改善民生,对开启全面建设社会主义现代化国家新征程具有重大意义。针对当前我国民生领域存在的一些亟待解决的问题,应通过加强立法、加大执法司法力度
摘要:在经济社会调查中,对空间的相关性应用较为广泛,传统的抽样设计已经跟不上时代的发展。随着时代衍生出来的空间平衡抽样设计方案,对总体单元的空间信息考虑相对全面。文章主要通过分析经济社会调查中的空间相关性和空间平衡抽样设计的概念,进而研究经济社会调查中的空间平衡抽样设计方法。   关键词:经济社会调查;空间平衡;抽样设计   一、经济社会调查中的空间相关性   经济社会调查中所需要研究的对象
摘要:随着现代市场经济的快速进步,市场体系得到持续的完善,互联网金融产业也得到了如火如荼的发展。文章从阐述互联网金融概念入手,进一步分析了主要的互联网金融风险,介绍了互联网金融风险防范过程中存在的问题,最后提出了加强风险防范的措施。   关键词:互联网金融;风险管理;防范措施   金融产业是我国第三产业结构体系中非常重要的组成部分,它在我国国民经济体系的发展与完善中占据着重要地位。随着信息化时
摘 要:随着社会的不断发展,教育行业相比过去已经有了非常大的进步,初中阶段使用的教学方法也越来越先进,但是在新课改背景下,初中数学仍需做出一定变革,促进新课改进程的加深.苏教版初中数学已经做了一系列的改进,对提升初中数学教学有效性有很大帮助,教师应该清楚,教育不是一成不变的,是处于不断变化之中的,教师应该用发展的眼光看待问题.本文中,对苏教版初中数学教材特点进行了分析,并且结合笔者多年的教学经验,
摘 要:物理是初中教育阶段新开设的一门学科,初中生刚刚接触时往往不知道该如何学习,唯一可以直接上手的就是各类物理概念,这不仅是物理知识的基础部分,还是整个物理体系的支撑点,教师需聚焦概念建构,提升他们的物理学习力,使其物理学习水平升高.  关键词:概念;初中物理;学习力  中图分类号:G632 文献标识码:A 文章编号:1008-0333(2021)32-0062-02  收稿日期:202