计本 iPhone手机应用开发设计(爱炒股) - 图文(4)

2020-02-21 22:07

图5-20 设置界面 图5-21 行情刷新平率设置界面

6爱炒股软件系统实现

iStock应用1.0.4版本已成功上线至苹果AppStore应用商店,通过搜索关键词“iStock”、“模

拟炒股”即可搜索到。关于该应用的具体详细上线信息及下载地址详见附录二。

6.1 数据的抓取与解析

6.1.1 数据的抓取

应用中的数据主要来源于同花顺、新浪股票、和讯股票、自选股(腾讯)、雅虎等。这些数据来

源所返回的数据类型、格式也截然不同。应用中数据的抓包在mac环境下所使用的工具是paros。 (1)使移动端和电脑在同一个网段; (2)在移动端上设置HTTP代理,如图6-1;

(3)启动paros,设置Local Proxy中的Adress和Port,如图6-2; (4)然后运行移动端上程序即可看到数据包。

16

图6-1 数据抓取设置操作一 图6-2 数据抓取设置操作二 6.1.2 数据解析

(1)返回类型为字符串格式

以请求自选股模块中的数据为例,该接口来自于新浪股票,请求格式为: http://hq.sinajs.cn/list=市场+股票代码,市场+股票代码,?? 例如:http://hq.sinajs.cn/list=sz000001,sh601688,返回数据如下:

var hq_str_sz000001=\平安银

行,13.88,13.83,13.91,13.97,13.75,13.91,13.92,26392797,365850445,12000,13.91,87282,13.90,18800,13.89,77245,13.88,44377,13.87,94400,13.92,134301,13.93,248200,13.94,1051131,13.95,106360,13.96,2015-01-21,10:05:40,00\var hq_str_sh601688=\华泰证

券,21.99,21.21,22.04,22.11,21.58,22.04,22.06,84642718,1853499325,1100,22.04,30598,22.03,38600,22.02,81800,22.01,340147,22.00,500,22.06,78954,22.07,209000,22.08,152106,22.09,145240,22.10,2015-01-21,10:05:37,00\

有效数据为双引号中得内容,不同含义的数据用逗号隔开了。以平安银行(000001)为例:

17

表6-1 请求返回数据示例

序号 0 1 2 3 4 5 6 7 8 9 10 11 ?? 18 19 20 21 ?? 28 29 30 31 解析思路:

(1)将返回的数据进行编码转换,否则会出现乱码的情况; (2)通过分号“;”判断请求股票的个数,并通过分号将其隔开; (3)去掉多余的返回数据“var hq_str_”;

(4)将等号“=”转换成逗号“,”,并通过逗号再次将个股中得数据分割; (5)最后将分割号的数据逐个存到模型中。

关键代码如下:

内容 平安银行 13.88 13.83 13.91 13.97 13.75 13.91 13.92 26392797 365850445 12000 13.91 ?? 44377 13.87 94400 13.92 ?? 106360 13.96 2015-01-21 10:05:40 含义 股票名称 今日开盘价 昨日收盘价 当前最新价 今日最高价 今日最低价 竞买价 竞卖价 成交数量 成交金额 买一申股 买一报价 ?? 买五申股 买五报价 卖一申股 卖一报价 ?? 卖五申股 卖五报价 日期 时间 备注 “买一”报价 “卖一”报价 单位:股(使用时以单位:元(使用时以单位:股(下同) 18

- (void)dataParaing:(NSMutableData *)data{ //编码的转换

NSStringEncoding enc =CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000); //创建文字对象,定义为网站的回复内容

NSString *retStr = [[NSStringalloc] initWithData:data encoding:enc]; //判断自选股的个数

NSString *regExStr = @\;

NSString *StringForSearch = retStr; NSError *error = NULL;

NSRegularExpression *regex = [NSRegularExpressionregularExpressionWithPattern:regExStr options:NSRegularExpressionCaseInsensitiveerror:&error];

NSUInteger numberOfMatches = [regex numberOfMatchesInString:StringForSearch options:0range:NSMakeRange(0, [StringForSearch length])];

NSArray *retStrArray = [retStr componentsSeparatedByString:@\]; for (int i = 0; i < numberOfMatches; i ++) {

//定义回复的文字,把文字中的@\

retStr = [retStrArray[i] stringByReplacingOccurrencesOfString:@\withString:@\]; if (i == 0) {

retStr = [retStr substringFromIndex:11]; }else{

retStr = [retStr substringFromIndex:12]; }

NSArray* stockData = [NSArrayarrayWithArray:[retStr componentsSeparatedByString:@\]]; //创建临时的文字对象,定义为股票的数据内容

NSString* stockNumberTemp = [NSStringstringWithFormat:@\,[stockData objectAtIndex:0]]; NSString* stockNameTemp = [NSStringstringWithFormat:@\,[stockData objectAtIndex:1]]; NSString* stockCurrentTemp = [NSStringstringWithFormat:@\,[stockData objectAtIndex:4]]; //计算股票的升幅数据

double current = [[stockData objectAtIndex:4] doubleValue]; double lastDay = [[stockData objectAtIndex:3] doubleValue]; double different = current - lastDay;

double percent = different / lastDay * 100; ZMPStock *stock = [[ZMPStockalloc] init];

stock.stockName = [stockNameTemp substringFromIndex:1]; stock.stockCode = [stockNumberTemp substringFromIndex:2]; stock.stockPlate = [stockNumberTemp substringToIndex:2]; stock.stockCurrentPrice = stockCurrentTemp; stock.stockIndex = stockPercentTemp;

[_dataArrayaddObject:stock]; }

[_tableViewreloadData]; }

(2)返回类型为json格式

以请求大盘模块中排行榜中得数据为例,例如:

http://ifzq.gtimg.cn/appstock/app/mktHs/index?r=91509 返回数据如下:

19

{

\ \

\ {

\ \信托\ \ \ \

\ \陕国投A\ \ \ \ },?? ],

\ {

\ \ \中文\ \ \ \ \ \

},?? ],

\ {

\ \

\朗玛信息\ \ \ \ \ \

},?? ], ?? \}

以上数据是通过Jsaon软件调整布局后的结果。返回格式为json格式的数据类型都是非常规范的,所以解析起来并没有字符串的解析那样麻烦。

关键代码如下:

20


计本 iPhone手机应用开发设计(爱炒股) - 图文(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:Fluent计算时outflow 与 pressure outlet的区别

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: