2012-06-20 55 views
2

我在一個嚴格的時間限制,我真的需要一個正則表達式來解析這種類型的錨(他們都在這個格式)使用MATLAB來分析在錨URL HTML,有助於快速

<a href="20120620_0512_c2_1024.jpg">20120620_0512_c2_102..&gt;</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=.*?>', ''); 
+0

到目前爲止,您的代碼得到了什麼結果?你能展示它和代碼嗎? :) –

+2

最好在你的問題中編輯它。 :)把4個空格放在它之前,它被放在代碼塊 –

+0

你真的需要使用Matlab?通常我會考慮使用像Python或Ruby這樣的腳本語言 - 它們有更好的HTML解析功能。 – jsalonen

回答

3

嘗試以下:

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' 
+0

謝謝,這是完美的。 – DontTurnAround

1

我認爲這是你在找什麼:

htmlLink = '<a href="20120620_0512_c2_1024.jpg">20120620_0512_c2_102..&gt;</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..&gt;</a>', '<a href="20120620_0512_c2_1025.jpg">20120620_0512_c2_102..&gt;</a>', '<a href="20120620_0512_c2_1026.jpg">20120620_0512_c2_102..&gt;</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' 
+0

此正則表達式僅適用於該html我需要它能夠解析此頁面的html [鏈接](http://sohowww.nascom.nasa.gov//data/REPROCESSING/Completed/2012/c2/20120620/) – DontTurnAround

+0

但我真的很喜歡你的正則表達式包含.jpg結尾,這將簡化我的代碼。但我希望能夠解析整個頁面的HTML,而不是從頁面解析錨定數組 – DontTurnAround