我是Matlab
的新人,我目前正在处理从金融时报网站出口的财务数据。我想知道如何从此页面获得股价预测信息
http://markets.ft.com/research/Markets/Tearsheets/Forecasts?s=DIS:NYQ
High +34.7 % 85.00
Med +15.7 % 73.00
Low -9.6 % 57.00
并将此信息保存为变量。
答案 0 :(得分:0)
% Create URL string and read in HTML
ftbaseurl = 'http://markets.ft.com/research/Markets/Tearsheets/Forecasts?s=';
ticksym = 'DIS:NYQ';
s = urlread([ftbaseurl ticksym]);
% Create pattern string for regular expression matching
trspan = '<tr><td class="text"><span class="';
tdspan1 = '</span></td><td><span class="\w\w\w color ">'; % \w\w\w matchs pos or neg
matchstr1 = '(?<percent>[\+|\-]*\d+.\d+)'; % percent: match (+or-)(1+ digits).(1+ digits)
tdspan2 = ' %</span></td><td>';
matchstr2 = '(?<price>\d+\.\d\d)</td></tr>'; % price: match (1+ digits) . 2 digits
pat = [trspan 'high">High' tdspan1 matchstr1 tdspan2 matchstr2 '|' ...
trspan 'med">Med' tdspan1 matchstr1 tdspan2 matchstr2 '|' ...
trspan 'low">Low' tdspan1 matchstr1 tdspan2 matchstr2];
% Match patterns in HTML, case insensitive, put results in struct array
forecasts = regexpi(s,pat,'names');
结果是1乘3 struct array,其中每个元素都有两个字段'percent'
和'price'
,每个字段都包含由正则表达式解析器提取的字符串。例如
>> forecasts(3)
ans = percent: '-10.3'
price: '57.00'
>> str2double(forecasts(3).percent)
-10.3000
我会留给你把字符串转换为数字(请注意,财务软件通常以整数美分(或最低面额)存储价格而不是浮动点数to avoid numerical issues)并转向这成为一般功能。这是Matlab中的一些more information on regular expressions。
我上面的评论仍然有效。这是非常低效的。您正在下载整个网页HTML并对其进行解析,以便找到一些小数据。如果这不经常更新或者你不需要它非常快,那么这很好。此外,这个计划是脆弱的。如果英国“金融时报”更新其网站,可能会破坏代码。如果你经常尝试下载他们的常规网页,他们也可能会阻止你。