Использование MATLAB для разбора HTML для URL в якорях, помогает быстро
У меня строгий лимит времени, и мне действительно нужно регулярное выражение для разбора этого типа якоря (все они в этом формате)
<a href="20120620_0512_c2_1024.jpg">20120620_0512_c2_102..></a>
для URL
20120620_0512_c2_1024.jpg
Я знаю, что это не полный URL, это относительно, пожалуйста, помогите
Вот мой код до сих пор
year = datestr(now,'yyyy');
timestamp = datestr(now,'yyyymmdd');
html = urlread(['http://sohowww.nascom.nasa.gov//data/REPROCESSING/Completed/' year '/c2/' timestamp '/']);
links = regexprep(html, '<a href=.*?>', '');
2 ответа
Решение
Попробуйте следующее:
url = 'http://sohowww.nascom.nasa.gov/data/REPROCESSING/Completed/2012/c2/20120620/';
html = urlread(url);
t = regexp(html, '<a href="([^"]*\.jpg)">', 'tokens');
t = [t{:}]'
Результирующий массив ячеек (усеченный):
t =
'20120620_0512_c2_1024.jpg'
'20120620_0512_c2_512.jpg'
...
'20120620_2200_c2_1024.jpg'
'20120620_2200_c2_512.jpg'
Я думаю, это то, что вы ищете:
htmlLink = '<a href="20120620_0512_c2_1024.jpg">20120620_0512_c2_102..></a>';
link = regexprep(htmlLink, '(<a href=")(.*\.jpg)(">.*</a>)', '$2');
link =
20120620_0512_c2_1024.jpg
regexprep
работает также для массивов строк, так что это тоже работает:
htmlLinksCellArray = { '<a href="20120620_0512_c2_1024.jpg">20120620_0512_c2_102..></a>', '<a href="20120620_0512_c2_1025.jpg">20120620_0512_c2_102..></a>', '<a href="20120620_0512_c2_1026.jpg">20120620_0512_c2_102..></a>' };
linksCellArray = regexprep(htmlLinksCellArray, '(<a href=")(.*\.jpg)(">.*</a>)', '$2')
linksCellArray =
'20120620_0512_c2_1024.jpg' '20120620_0512_c2_1025.jpg' '20120620_0512_c2_1026.jpg'