由於本身最近在學習作期貨交易,想要下載期貨的行情數據來作分析。有一些交易軟件是能夠導出數據的,可是導出的過程仍是須要不少的手工操做,本身在想能不能經過Python程序來實現呢。php
經過在網上搜索找到了新浪財經的期貨數據API用法,詳細能夠參考這個連接: http://blog.sina.com.cn/s/blog_7ed3ed3d0101gphj.htmlhtml
我主要使用的是日線圖週期的歷史數據接口: http://stock2.finance.sina.com.cn/futures/api/json.php/IndexService.getInnerFuturesDailyKLine?symbol=C0python
上面的例子是請求玉米連續(代碼爲C0)的全部日線圖的行情數據。json
下面是詳細的代碼:api
import requests import sys future_code = sys.argv[1] url_str = ('http://stock2.finance.sina.com.cn/futures/api/json.php/IndexService.getInnerFuturesDailyKLine?symbol=' + future_code) r = requests.get(url_str) r_json = r.json() r_lists = list(r_json) print('date,open,high,low,close,vol,code') for r_list in r_lists: for v in r_list: print(v + ',',end='') print(future_code)
代碼說明:使用python的第三方模塊requests能夠很方便的對api發送請求,將返回的json格式數據轉換爲列表格式,而且經過for循環來打印出來。 腳本的使用方法,將上面的代碼保存爲get_sina_api_data.py。在命令行中經過下面命令來調用程序。學習
#參數中輸入期貨代碼C0 $ python3 get_sina_api_data.py C0 > C0.csv # 將程序輸出的數據保存到C0.csv文件中
程序執行成功後能夠經過下面命令來查看結果:url
#查看文件的前10行 $ head C0.csv date,open,high,low,close,vol,code 2005-01-04,1150.000,1154.000,1143.000,1145.000,101322,C0 2005-01-05,1141.000,1152.000,1141.000,1151.000,115404,C0 2005-01-06,1151.000,1157.000,1151.000,1154.000,116530,C0 2005-01-07,1162.000,1164.000,1156.000,1158.000,142096,C0 2005-01-10,1158.000,1159.000,1152.000,1155.000,125086,C0 2005-01-11,1156.000,1158.000,1154.000,1155.000,126812,C0 2005-01-12,1153.000,1158.000,1153.000,1157.000,153368,C0 2005-01-13,1150.000,1156.000,1149.000,1155.000,139970,C0 2005-01-14,1155.000,1157.000,1154.000,1156.000,130966,C0 #先將文件轉換爲csv表格格式再查看文件的前10行 $ csvlook C0.csv | head |-------------+----------+----------+----------+----------+---------+-------| | date | open | high | low | close | vol | code | |-------------+----------+----------+----------+----------+---------+-------| | 2005-01-04 | 1150.000 | 1154.000 | 1143.000 | 1145.000 | 101322 | C0 | | 2005-01-05 | 1141.000 | 1152.000 | 1141.000 | 1151.000 | 115404 | C0 | | 2005-01-06 | 1151.000 | 1157.000 | 1151.000 | 1154.000 | 116530 | C0 | | 2005-01-07 | 1162.000 | 1164.000 | 1156.000 | 1158.000 | 142096 | C0 | | 2005-01-10 | 1158.000 | 1159.000 | 1152.000 | 1155.000 | 125086 | C0 | | 2005-01-11 | 1156.000 | 1158.000 | 1154.000 | 1155.000 | 126812 | C0 | | 2005-01-12 | 1153.000 | 1158.000 | 1153.000 | 1157.000 | 153368 | C0 |
參考文獻:命令行