日期:2023-11-15
来源:玫瑰财经网
浏览:次
Web Service是一种新的Web应用程序分支,其可以执行从简单的请求到复杂商务处理的任何功能。Web Service技术使得运行在不同机器上的不同应用进行数据交互或集成。
1、Web Service简介
Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术。Web Service的主要目标是跨平台的可互操作性。为了实现这一目标,Web Service 完全基于XML(可扩展标记语言)、XSD(XML Schema)等独立于平台、独立于软件供应商的标准,是创建可互操作的、分布式应用程序的新平台。
API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。
应用程序接口(API:application programming interface)是一组定义、程序及协议的集合,通过 API 接口实现计算机软件之间的相互通信。API 的一个主要功能是提供通用功能集。程序员通过使用 API 函数开发应用程序,从而可以避免编写无用程序,以减轻编程任务。
2、腾讯股票实时数据
腾讯提供相对稳定、免费的股票即时数据Web Service API接口,分为股票实时数据详细信息和简要信息。
I、股票实时数据详细信息
接口:http://qt.gtimg.cn/q=sh601006
返回值:
v_sh601006="1~大秦铁路~601006~7.48~7.43~7.43~260548~145815~114733~7.47~590~7.46~4407~7.45~3851~7.44~1062~7.43~3079~7.48~686~7.49~4629~7.50~6627~7.51~2656~7.52~2393~~20230703155612~0.05~0.67~7.50~7.39~7.48/260548/194083793~260548~19408~0.17~9.53~~7.50~7.39~1.48~1132.80~1132.80~0.86~8.17~6.69~0.85~-4002~7.45~7.75~10.12~~~0.54~19408.3793~0.0000~0~ ~GP-A~11.98~3.46~6.30~9.00~6.66~8.21~5.95~0.13~-1.06~4.03~15144408989~15144408989~-13.35~11.98~15144408989~~~22.02~0.00~~CNY~0~___D__F__N";7.40~-3.77~4.15~22.45~18.52~216.11~128.55~-3.24~1.50~-14.46~3881525907~3881608005~-30.63~-1.94~3881525907~~~-12.97~-0.15~~CNY~0~___D__F__N";
注:腾讯股票实时行情数据接口网址中“sh”表示上海、“sz”表示深圳。如,“sh600653”为上证交易所的“申华控股”、“sz000021”为深圳交易所“深科技”;以 “~” 分割字符串中内容,下标从0开始
这个字符串由许多数据拼接在一起,不同含义的数据用逗号隔开了,对于网页前台程序员来说,这就是定义好的格式化字符变量。按数据循序具体含义为:
[0] 证券所 [1] 名字 [2] 代码 [3] 当前价格 [4] 昨收 [5] 今开 [6] 成交量(手) [7] 外盘 [8] 内盘 [9] 买一 [10] 买一量(手) [11] 买二 [12] 买二量 [13] 买三 [14] 买三量 | [15] 买四 [16] 买四量 [17] 买五 [18] 买五量 [19] 卖一 [20] 卖一量 [21] 卖二 [22] 卖二量 [23] 卖三 [24] 卖三量 [25] 卖四 [26] 卖四量 [27] 卖五 [28] 卖五量 [29] 最近逐笔成交 | [30] 时间 [31] 涨跌 [32] 涨跌幅(%) [33] 最高 [34] 最低 [35] 价格/成交量(手)/成交额 [36] 成交量(手) [37] 成交额(万) [38] 换手率 [39] 市盈率(TTM) [40] [41] 最高 [42] 最低 [43] 振幅 [44] 流通市值 | [45] 总市值 [46] 市净率 [47] 涨停价 [48] 跌停价 [49] 量比 [50] [51] 均价 [52] 市盈率(动) [53] 市盈率(静) |
II、股票实时数据简要信息
接口:http://qt.gtimg.cn/q=s_sh601006
返回值:
v_s_sh601006="1~大秦铁路~601006~7.48~0.05~0.67~260548~19408~~1132.80~GP-A";
具体含义为:
[0] 未知 [1] 名字 [2] 代码 | [3]当前价格 [4]涨跌 [5]涨跌% | [6]成交量(手) [7]成交额(万) [8] 总市值 |
6秒是交易所发给常规会员单位的实时数据刷新时间间隔!会员单位一般都追求0延迟,交易所有多快他们就尽量做到有多快; 对于转接数据或者N手转让数据,这个6秒就不能够保证了,一般会更长。 如果你发现是一分钟更新一次的话 那说明他们后台在以60秒为单位自行打包接收到的数据。 这个现象在一些中小网站的页面报价中也存在,具体时间间隔 由他们自己划定。
3、实时数据抓取
这里我们介绍抓取腾讯股票实时数据简要信息。
I、股票选择
在sheet1表格中选择感兴趣的股票(股票池),如图:
必要的信息是股票代码和名称,其它列信息根据自己的要求标注即可。沪深两市上市交易股票数量有5000多只,选择抓取股票的数量取决于用户特点、网络传输速度和电脑性能等多种因素。
在sheet3表格中选择主要股票指数和ETF基金指数,如图:
II、数据抓取窗体即功能
建立窗体如下图:
注:窗体UserForm1的ShowModel属性设为False,使得打开窗体后可切换到EXCEL表格中
运行结果如下:
点击【数据抓取】按钮,按sheet1所列股票代码抓取实时交易信息(抓取进程序号显示在)在sheet2中,如图:
按sheet3所列股票指数代码抓取实时交易信息在sheet4中,如图:
点击【数据抓取】按钮如果弹出下面警告窗口,按【确定】即可。
III、VBA代码
窗体初始化事件代码:
Private Sub UserForm_Initialize()'WebBrowser1控件加载上证指数分时线图形WebBrowser1.Navigate "http://image.sinajs.cn/newchart/min/n/sh000001.gif"'复合框初始化ComboBox1.AddItem "分时线"ComboBox1.AddItem "日K线"ComboBox1.AddItem "周K线"ComboBox1.AddItem "月K线"ComboBox1.ListIndex = 0'计算要抓取的股票和指数数量和TextBox1.Value = Sheet1.UsedRange.Rows.Count + Sheet3.UsedRange.Rows.Count - 4End Sub
点击【数据抓取】代码:
Private Sub CommandButton1_Click()Dim i, k As IntegerDim ID As StringDim str As StringDim URL As StringDim app, wb, wc'建立Application对象Set app = CreateObject("Excel.Application")Sheet2.Cells.ClearSheet2.Cells(1, 1) = "代码"Sheet2.Cells(1, 2) = "名称"Sheet2.Cells(1, 3) = "实时价格"Sheet2.Cells(1, 4) = "涨跌"Sheet2.Cells(1, 5) = "涨跌(%)"k = Sheet1.UsedRange.Rows.CountFor i = 1 To k - 1 ID = Sheet1.Cells(i + 1, 1) '设置股票代码 URL = "http://qt.gtimg.cn/q=s_" & ID '构造新浪股票实时行情数据接口地址 Set wb = app.Workbooks.Open(URL) '由当前工作簿打开数据接口 Set wc = wb.Sheets.Item(1)'提取数据接口返回的文本信息 str = wc.Cells(1, 1).Text Sheet2.Cells(i + 1, 1) = ID Sheet2.Cells(i + 1, 2) = Split(str, "~")(1) Sheet2.Cells(i + 1, 3) = Split(str, "~")(3) Sheet2.Cells(i + 1, 4) = Split(str, "~")(4) Sheet2.Cells(i + 1, 5) = Split(str, "~")(5) TextBox1.Value = iNext iSheet4.Cells.ClearSheet4.Cells(1, 1) = "代码"Sheet4.Cells(1, 2) = "名称"Sheet4.Cells(1, 3) = "实时价格"Sheet4.Cells(1, 4) = "涨跌"Sheet4.Cells(1, 5) = "涨跌(%)"k = Sheet3.UsedRange.Rows.CountFor i = 1 To 8 ID = Sheet3.Cells(i + 1, 1) URL = "http://qt.gtimg.cn/q=s_" & ID Set wb = app.Workbooks.Open(URL) Set wc = wb.Sheets.Item(1) str = wc.Cells(1, 1).Text Sheet4.Cells(i + 1, 1) = ID Sheet4.Cells(i + 1, 2) = Split(str, "~")(1) Sheet4.Cells(i + 1, 3) = Split(str, "~")(3) Sheet4.Cells(i + 1, 4) = Split(str, "~")(4) Sheet4.Cells(i + 1, 5) = Split(str, "~")(5) TextBox1.Value = iNext iSet wc = Nothingwb.CloseSet wb = NothingEnd Sub
点击sheet1第一列股票代码显示图形代码:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)Dim r, c'获得单元格所在行r = Target.Row'获得单元格所在列c = Target.Column'调用子过程setChart( r, c, 1),第3个参数为常数1,表示点击的是sheet1setChart r, c, 1End Sub
点击sheet3第一列股指数票代码显示图形代码:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)Dim r, cr = Target.Rowc = Target.ColumnsetChart r, c, 3End Sub
模块1中用子过程setChart代码:
Sub setChart(r, c, p)Dim s As IntegerDim ID As StringIf c = 1 And r > 1 Then If p = 1 Then ID = Sheet1.Cells(r, 1) Else ID = Sheet3.Cells(r, 1) End IfEnd If s = UserForm1.ComboBox1.ListIndex If s = 0 Then UserForm1.WebBrowser1.Navigate "http://image.sinajs.cn/newchart/min/n/" & ID & ".gif" If s = 1 Then UserForm1.WebBrowser1.Navigate "http://image.sinajs.cn/newchart/daily/n/" & ID & ".gif" If s = 2 Then UserForm1.WebBrowser1.Navigate "http://image.sinajs.cn/newchart/weekly/n/" & ID & ".gif" If s = 3 Then UserForm1.WebBrowser1.Navigate "http://image.sinajs.cn/newchart/monthly/n/" & ID & ".gif"End Sub
代码中,"http://image.sinajs.cn/newchart/..."为新浪股票图形接口地址,
将上证指数代码”sh000001“替换为其它股票代码,可显示不同股票所列图形。
下拉框选择不同类图形代码:
Dim r, c, p'当前单元格所在行r = ActiveCell.Row'当前单元格所在列c = ActiveCell.Column'当前表格序号p = ActiveWindow.ActiveSheet.IndexsetChart r, c, p
打开窗体,鼠标选择sheet1中茅台酒股票代码”sh600519“,如图:
下拉框选择日K线:
下拉框选择周K线:
下拉框选择月K线:
用户可根据自己的判断选择感兴趣的股票进行实时监控,数据抓取刷新后可在其它表格(如sheet5、sheet6等)通过跨表格数据引用进行进一步处理、分析,对个别感兴趣的股票也可以通过不同类图形观察其历史变化趋势。
通过VBA Application对象抓取股票实时数据的效率不是特别理想,优点是不需要解析网页文档,对于不熟悉网页编程的用户不失为一种好的解决方案。
500吨汽车吊作业性能表(汽车吊支腿反力及抗倾覆验算)
石碣镇汽车站(今天,石碣汽车客运站恢复运营)
招贤汽车站(9月14日起,莒县K601路增开大站快车)
北京福田汽车图片(自重不到两吨,详解福田领航S1小卡)
东风轻型汽车(“东风轻型车”横空出世 未来无人驾驶车将快递送到家门口)
周口市汽车东站(郑阜高速铁路上的主要客运站——周口东站)
Copyright (c) 2022 玫瑰财经网 版权所有
备案号:冀ICP备17019481号
玫瑰财经网发布此信息的目的在于传播更多信息,与本站立场无关。玫瑰财经网不保证该信息(包含但不限于文字、视频、音频、数据及图表)全部或者部分内容的准确性、真实性、完整性、有效性、及时性、原创性等。
相关信息并未经过本网站证实,不对您构成任何投资建议,据此操作,风险自担。