Вот простое решение с использованием urlread
и regexpi
:
% 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, где каждый элемент имеет два поля, 'percent'
и 'price'
, каждое из которых содержит строки, извлеченные анализатором регулярных выражений. Например
>> forecasts(3)
ans = percent: '-10.3'
price: '57.00'
>> str2double(forecasts(3).percent)
-10.3000
Я оставлю вам преобразование строк в числа (обратите внимание, что финансовое программное обеспечение обычно хранит цены в целых центах (или в любом другом наименьшем номинале), а не в долларах с плавающей запятой во избежание проблем с числами) и превратить это в общую функцию. Вот дополнительная информация о регулярных выражениях в Matlab.
Мой комментарий выше остается в силе. Это очень неэффективно. Вы загружаете весь HTML-код веб-страницы и анализируете его, чтобы найти несколько небольших фрагментов данных. Это нормально, если это не обновляется очень часто или если вам не нужно, чтобы это было очень быстро. Кроме того, эта схема является хрупкой. Если Financial Times обновит свой веб-сайт, код может быть взломан. И если вы пытаетесь очень часто загружать их обычные веб-страницы, они также могут заблокировать вас.
person
horchler
schedule
03.06.2013
urlread
Matlab могут работать. Что касаетсяurlread
, обязательно прочитайте это. - person horchler   schedule 03.06.2013