本系列目錄:-文摘-
1. 新浪的股票查詢接口:講解了該接口的數據結構;
2. 新浪的股票查詢接口(使用篇):用一個簡單的例子演示該接口的使用;
3. 實時股票信息查詢:一個高級的例子,能夠自動刷新股票信息,實現了實時更新;
以大秦鐵路(股票代碼:601006)為例,如果要獲取它的最新行情,只需訪問新浪的股票數據接口:http://hq.sinajs.cn/list=sh601006
這個url會返回一串文本,例如:
var hq_str_sh601006=“大 秦鐵路, 27.55, 27.25, 26.91, 27.55, 26.20, 26.91, 26.92, 22114263, 589824680, 4695, 26.91, 57590, 26.90, 14700, 26.89, 14300, 26.88, 15100, 26.87, 3100, 26.92, 8900, 26.93, 14230, 26.94, 25150, 26.95, 15220, 26.96, 2008-01-11, 15:05:32“;
這個接口對於JavaScript程序非常方便,通常的使用方式為,靜態或動態地在頁面中插入:
<script type=“text/javascript“ src=“http://hq.sinajs.cn/list=sh601006“ charset=“gb2312“></script>
這樣一來,你就可以在JS中用變量名“hq_str_sh601006”訪問大秦鐵路的行情數據了。下一篇文章用JavaScript代碼演示了具體使用方法。
這個字符串由許多數據拼接在一起,不同含義的數據用逗號隔開了,按照程序員的思路,順序號從0開始。
0:”大秦鐵路”,股票名字;
1:”27.55″,今日開盤價;
2:”27.25″,昨日收盤價;
3:”26.91″,當前價格;
4:”27.55″,今日最高價;
5:”26.20″,今日最低價;
6:”26.91″,競買價,即“買一”報價;
7:”26.92″,競賣價,即“賣一”報價;
8:”22114263″,成交的股票數,由於股票交易以一百股為基本單位,所以在使用時,通常把該值除以一百;
9:”589824680″,成交金額,單位為“元”,為了一目了然,通常以“萬元”為成交金額的單位,所以通常把該值除以一萬;
10:”4695″,“買一”申請4695股,即47手;
11:”26.91″,“買一”報價;
12:”57590″,“買二”
13:”26.90″,“買二”
14:”14700″,“買三”
15:”26.89″,“買三”
16:”14300″,“買四”
17:”26.88″,“買四”
18:”15100″,“買五”
19:”26.87″,“買五”
20:”3100″,“賣一”申報3100股,即31手;
21:”26.92″,“賣一”報價
(22, 23), (24, 25), (26,27), (28, 29)分別為“賣二”至“賣四的情況”
30:”2008-01-11″,日期;
31:”15:05:32″,時間;
如果你要同時查詢多個股票,那么在URL最后加上一個逗號,再加上股票代碼就可以了;比如你要一次查詢大秦鐵路(601006)和大同煤業(601001)的行情,就這樣使用URL:
http://hq.sinajs.cn/list=sh601003,sh601001
返回的數據為:
- var hq_str_sh601003=“柳 鋼股份, 18.91, 18.80, 18.81, 19.10, 18.51, 18.80, 18.81, 5125000, 96017794, 9115, 18.80, 5100, 18.79, 12000, 18.78, 1800, 18.77, 2600, 18.76, 1500, 18.81, 25283, 18.82, 4470, 18.84, 3400, 18.85, 1600, 18.86, 2008-01-11, 15:05:32“;
- var hq_str_sh601001=“大 同煤業, 40.00, 40.06, 39.81, 40.60, 39.13, 39.82, 39.83, 8117292, 324759633, 50, 39.82, 300, 39.81, 22809, 39.80, 1500, 39.79, 2600, 39.78, 600, 39.83, 10600, 39.85, 2100, 39.87, 2390, 39.88, 1000, 39.89, 2008-01-11, 15:05:32“;
但如果你要查詢大盤指數,情況會有不同,比如查詢上證綜合指數(000001),使用如下URL:
http://hq.sinajs.cn/list=s_sh000001
返回的數據為:
var hq_str_s_sh000001=“上證指數,5484.677,28.136,0.52,877247,15587495“;
數據含義分別為:指數名稱,當前點數,當前價格,漲跌率,成交量(手),成交額(萬元);
查詢深圳成指的URL為:
http://hq.sinajs.cn/list=s_sz399001
數據構成方式與上證綜合指數的數據相同。
最后說一下,新浪並沒有明確提供這個查詢API,所以他可以在不通知任何人的情況下,改變這種查詢方式的接口和實現。
本系列目錄: – 文摘-
1. 新浪的股票查詢接口:講解了該接口的數據結構;
2. 新浪的股票查詢接口(使用篇):用一個簡單的例子演示該接口的使用;
3. 實時股票信息查詢:一個高級的例子,能夠自動刷新股票信息,實現了實時更新;
在上一篇日志中,我介紹了新浪個股的查詢接口和數據結構,現在用具體的代碼演示如何使用這個接口。
還是以查詢大秦鐵路為例,在頁面中插入這樣的代碼:
- <script type=“text/javascript“ src=“http://hq.sinajs.cn/list=sh601006“ charset=“gb2312“></script>
- <script type=“text/javascript“>
- var elements=hq_str_sh601006.split(“,”);
- document.write(“current price:”+elements[3]);
- </script>
這段代碼輸出大秦鐵路(股票代碼:601006)的當前股價。下面是代碼的運行結果(請確認你的瀏覽器允許運行JavaScript,另外,RSS訂閱者請到Web頁面上來看):
current price:5.84current price:25.00
大家可以和新浪的結果對比,應該是同樣的值。當然,這段代碼不會自動刷新股票價格。
(update:我已經發布了能夠實時更新數據的代碼:鏈接)
我想重申一遍:目前還沒有免費提供的股票查詢接口,雖然看起來我們可以免費使用新浪的這個接口,但是新浪並沒有公開聲明發布了該接口;也就是說,他可以在不通知任何人的情況下,改變該接口的定義和實現。
實時股票信息查詢(JavaScript代碼)
本系列目錄:
1. 新浪的股票查詢接口:講解了該接口的數據結構;
2. 新浪的股票查詢接口(使用篇):用一個簡單的例子演示該接口的使用;
3. 實時股票信息查詢:一個高級的例子,能夠自動刷新股票信息,實現了實時更新;
前面一篇文章講了如何使用新浪的股價查詢接口,那里的例子比較簡單,不能實時更新股價信息。現在我給大家一個能實時更新股票信息的代碼。
還是以大秦鐵路為例,為了體現實時性,這段代碼顯示當前股價(由於不同瀏覽器動態載入script的方法略有不同,這段代碼只適用於IE和firefox瀏覽器):
- <input type=“text“ id=“realtimeprice“></input>
- <script type=“text/javascript“ src=“http://hq.sinajs.cn/list=sh601006“ id=“jscode“charset=“gb2312“></script>
- <script type=“text/javascript“>
- function reload(){
- var code=document.getElementById(“jscode”);
- if(!code) return;
- document.body.removeChild(code);
- code=document.createElement(“script”);
- code.src=”http://hq.sinajs.cn/list=sh601006″;
- code.id=”jscode”;
- code.charset=”gb2312″;
- document.body.appendChild(code);
- elements=hq_str_sh601006.split(“,”);
- document.getElementById(“realtimeprice”).value=elements[3];
- }
- reload();
- setInterval(reload,2000);//每兩秒鍾更新一次
- </script>
請大家把這段代碼復制下來,插入到一個新建html文檔的body標簽之間。由於本網站其他腳本和這段代碼有些沖突,而且該代碼只適用於IE和firefox瀏覽器,所以我就不在這里顯示運行結果了。
不過我上傳了一個樣本,大家可以點擊這個鏈接看到效果(只限IE和Firefox):鏈接
(另外,請大家稍有耐心,只有原始數據出現變化的時候,我的代碼才能顯示出變化,對不對?而且我的代碼是每隔兩秒鍾獲取一次數據。當你發現數據不再變化的時候,應該是交易所已經結束當天交易了,等第二天吧 )
大家可以自行對照新浪的網頁看顯示的是否正確:鏈接
另外,我必須再次重申一遍:目前還沒有免費提供的股票查詢接口,雖然看起來我們可以免費使用新浪的這個Web接口,但是新浪並沒有公開聲明發布了該接口;也就是說,他可以在不通知任何人的情況下,改變該接口的定義和實現。