Matlab读取服务器数据

版权所有,转载请注明出处:http://guangboo.org/2013/05/03/matlab-retrieve-data-from-server

Matlab的工具箱中提供了Bloomberg和Yahoo等数据接口,用于提取上市公司的行情数据,其实这些接口都是通过HTTP协议通信的,并且yahoo的接口是直接从yahoo门户网站提取的,只是需要在matlab端对htm进行解析。其核心主要是使用了Matlabd的urlread函数,那么通过该函数我们也可以从网络获取各种数据。

当前很多网站特别是社交网站都提供了API,供第三方开发,并且数据格式一般都支持XML和JSON两种,因此如果在matlab下面提取这样的数据的话,就需要对XML和JSON进行解析,这里有一个JSON的解析库:http://www.mathworks.com/matlabcentral/fileexchange/23393-another-json-parser。下面我们编写一个简单的fetch函数,来从一个URL中获取数据,该数据的格式为JSON。

function output = fetch(url, varargin)
if nargin < 2
    % to do sth.
    return;
end
pattern = varargin{1};

if ~ischar(pattern)
   error('XXXX:InvalidParameter', 'The parameter pattern must be str.');
end

[json, status] = urlread(url, 'get', {'key', urlencode(pattern)});

if status == 1
    try
        output = parse_json(json);
    catch exception
        error('XXXX:InvalidJson', 'Request succussfuly! but the result is not valid json string.');
    end
else
    error(['Cant connect the site "' url ...
        '", or connect timeout. If you connect internet with proxy, you should set the proxy server manually, see alse http://www.mathworks.cn/help/techdoc/matlab_env/bq37bb3-1.html#bq37bb3-3']);
end

主要代码就是:

[json, status] = urlread(url, 'get', {'key', urlencode(pattern)});

urlencode是对URL中的非ASCII吗字符进行编码。json为返回的JSON数据,status表示请求的结果状态,当status为1时表示获取数据成功,然后通过:

output = parse_json(json);

来将JSON格式转换成Matlab的数据类型。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值