我試圖從R!上獲取HTTP/FTP服務器上的文件列表,以便下一步我將能夠下載它們(或選擇一些符合要求的文件我的標準下載)。在R中的HTTP/FTP服務器上列出文件
我知道可以在網頁瀏覽器(下載管理器)中使用外部程序,這將允許我從當前網頁/ ftp中選擇要下載的文件。但是,我希望將所有內容都編寫成腳本,以便我可以更容易地重現。
我想過從R調用Python! (因爲它看起來好多了),但我試圖在R中完全做到這一點!
我寫了下面幾行
require("RCurl")
result <- getURL("http://server",verbose=TRUE,ftp.use.epsv=TRUE, dirlistonly = TRUE)
結果變量是字符類型:
typeof(result)
[1] "character"
示例內容如下:
有趣file_20150629.txt20八月2015 09:31 289K \ n有趣 file_20150630.txt20月,2015年09:31 293K \ nInteresting file_20150701.txt20月,2015年09:31 301K \ nInteresting file_20150702.txt20月,2015年09:31 304K \ nInteresting file_20150703.txt20月 - 2015年09 :31 301K \ nInteresting file_20150704.txt20 8 - 2015年9點31 300K \ nInteresting file_20150705.txt20 8 - 2015年9點31 300K \ nInteresting file_20150706.txt20 8 - 2015年9點31 305K \ nInteresting file_20150707 .txt20 Aug-2015 09:31 305K \ nInterresting file_20150708.txt20 Aug-2015 09:31 301K \ nInteresting file_20150709.txt20月,2015年09:31 294K \ n
\ n \ n \ n」個
所以現在,我試圖解析結果內容:
myFiles <- strsplit(result,'<a[^>]* href=\\"([^"]*.txt)\\"')[[1]]
希望我會匹配txt文件(因爲它在括號:())。但它匹配:
">Interesting file_20150706.txt</a></td><td align=\"right\">20 Aug-2015 09:31 </td><td align=\"right\">305K</td></tr>\n<tr><td valign=\"top\"><img src=\"/apacheIcons/text.gif\" alt=\"[TXT]\"></td><td>
改爲。
有什麼不對(我測試了我的表達https://regex101.com/)或(也許這個問題是更合適的)有更容易的方法來獲得在R服務器上具有特定擴展名的文件列表! ?
很大的反響!我仍然不知道我的正則表達式中出了什麼問題,但是您的解決方案完美無缺! – matandked
是的,很好的代碼。這幫助了我很多。特別是最後兩節。 –