【发布时间】:2024-05-01 14:40:03
【问题描述】:
我正在尝试从 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"
示例内容如下:
有趣的文件_20150629.txt20 Aug-2015 09:31 289K\n有趣 file_20150630.txt20 Aug-2015 09:31 293K\n有趣 file_20150701.txt20 Aug-2015 09:31 301K\n有趣 file_20150702.txt2015 年 8 月 09:31 304K\n有趣 file_20150703.txt2015 年 8 月 09:31 301K\n有趣 file_20150704.txt20 八月 2015 09:31 300K\n有趣 file_20150705.txt20 Aug-2015 09:31 300K\n有趣 file_20150706.txt20 Aug-2015 09:31 305K\n有趣 文件_20150707.txt2015 年 8 月 09:31 305K\n有趣 file_20150708.txt2015 年 8 月 09:31 301K\n有趣 file_20150709.txt2015 年 8 月 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 中服务器上具有特定扩展名的文件列表! ?
【问题讨论】:
标签: regex r html-parsing text-parsing