R:如何在互联网上干净地检索远程文件的属性?

时间:2013-12-30 12:07:31

标签: r rcurl

我可以使用以下代码轻松地从互联网上下载文件:

myurl <- "http://www.jatma.or.jp/toukei/xls/13_01.xls"
download.file(myurl, destfile = myfilepath, mode = 'wb')

但是,通常我想在下载之前检查上次修改文件的 date 。我可以使用LWP::Simple包在Perl中轻松完成此操作。我已经浏览了RCurl的文档(我承认我的理解很差),我能找到的最接近的是basicHeaderGatherer函数。

library(RCurl)

if(url.exists("http://www.jatma.or.jp/toukei/xls/13_01.xls")) {
     h = basicHeaderGatherer()
     foo <- getURL("http://www.jatma.or.jp/toukei/xls/13_01.xls",
              headerfunction = h$update)
     names(h$value())
     h$value()
  }

h$value()[3]

通过使用上面的代码,我最终可以访问“Last-Modified”属性,但不能根据下面的输出生成错误。 如何清理我的代码以避免此错误并以简单的方式访问“Last-Modified”属性?

(请注意:this answer看起来很有希望,但它会生成类似于下面显示的错误消息,因此无法解决此特定问题。)

Error in curlPerform(curl = curl, .opts = opts, .encoding = .encoding) (from #3) : 
  embedded nul in string: '  \021ࡱ\032 \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0>\0\003\0  \t\0\006\0\0\0\0\0\0\0\0\0\0\0\001\0\0\09\0\0\0\0\0\0\0\0\020\0\0    \0\0\0\0    \0\0\0\08\0\0\0                                                                                                                                                                                                                                                                                                                                                                                                                                                \t\b\020\0\0\006\005\0g2 \a \0\002\0\006\006\0\0 \0\002\0 \004 \0\002\0\0\0 \0\0\0\\\0p\0\003\0\0CVC                                                                                                          B\0\002\0 \004a\001\002\0\0\0 \001\0\0=\001\002\0$\0 \0\002\0\021\0\031\0\002\0\0\0\022\0\002\0\0\0\023\0\002\0\0\0 \001\002\0\0\0 \001\002\0\0\0=\0\022\0  \017\0xKX/8\0\0\0\
> h$value()[3]
                  Last-Modified 
"Fri, 06 Dec 2013 05:33:53 GMT" 
> 

1 个答案:

答案 0 :(得分:1)

library(RCurl)
url.exists("http://www.jatma.or.jp/toukei/xls/13_01.xls", .header=T)["Last-Modified"]
# Last-Modified 
# "Fri, 06 Dec 2013 05:33:53 GMT"