用MATLAB从网页中抓取金融数据
MATLAB不仅能用于数学计算,同时也能用于文本解析。
下面是用MATLAB从雅虎财经检索股票历史价格信息的例子:
clear;%删除之前定义的变量
symbol='IBM';%股票代码
%检索网页
historical PriceFile= ...
urlread(['http://finance.yahoo.com/q/hp? s=',symbol]);
%将日期存入单元格数组
dateField=…。
regexp(historicalPriceFile,…
'<td class= "yfnc_tabledatal”nowrap align="right">…
([\d\w-]+)</td>','tokens');
%将教值存入单元格数组
numField=regexp(historicalPriceFile,…
'<td class=”yfnc tabledatal”align=”right">…
([\d\.,]+)</td>’,'tokens');
%转换为字符串单元格数组
dates= [dateField {:}]’;
numField= [numField{:}]’;
%转换为双精度浮点单元格数组
op=str2double (numField (1: 6: end));%开盘价
hi=str2double (numField (2: 6: end));%最高价
lo=str2double (numField (3: 6: end));%最低价
cl=str2double (numField (4: 6: end));%收盘价
vol=str2double (numField (5: 6: end));%成交量
adjCl=str2double (numField (6: 6 : end));%调整收盘价
这个程序文件可以从epchan. com/book/ example3_1.m下载,用户名和密码都是“sharperatio"。这个网页抓取程序有一个局限:每次只能抓取一个网页上的信息。由于雅虎财经上的历史数据显示在好多页上,所以使用MATLAB检索IBM全部历史价格数据并不十分有用。当然,这个程序只是MATLAB文本解析功能的简单展示。