爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 9101|回复: 5

MATLAB用于提取网络数据urlread

[复制链接]

新浪微博达人勋

发表于 2014-7-11 00:00:37 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
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;endpattern = 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.');    endelse    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/tec ... b3-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的数据类型。

密码修改失败请联系微信:mofangbao

新浪微博达人勋

 成长值: 32430
发表于 2014-7-11 08:15:55 | 显示全部楼层
matlab版里面原来有过类似的内容
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-7-11 08:44:13 | 显示全部楼层
matlab够强大的了
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-7-11 08:56:36 | 显示全部楼层
二爷名声在外 发表于 2014-7-11 08:15
matlab版里面原来有过类似的内容

恩,不过我就是在整理我的程序开发笔记,要实现项目的确需要这方面的东西,所以我就整理一些。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-7-11 08:57:09 | 显示全部楼层
ryxcxmy 发表于 2014-7-11 08:44
matlab够强大的了

你也用过类似的功能?可否推荐几个比较牛的指令?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-7-11 14:36:54 | 显示全部楼层
不好意思,我没用过这方面的
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表