与Internet Explorer的文件下载工作正常,但使用R时失败

我从中国人民银行网站的窗口上使用R下载了各种excel文件一年多,用来跟踪各种中国macros观指标。 但是,下载在几个月前停止正常工作,我无法解决问题。 R还下载文件,但内容是垃圾。 请注意,手动下载仍然通过Internet Explorer完美地工作,但我需要一个自动化的解决scheme,因为手动做这个不是很实际。

这里是代码(非常简单!):

url <- "http://www.pbc.gov.cn/publish/html/2014s04.xls" file <- "D:\\tmp\\tmp.xls" res <- tryCatch(download.file(url,destfile=file, mode="wb"),error=function(e) 1) 

这返回以下内容:

 trying URL 'http://www.pbc.gov.cn/publish/html/2014s04.xls' Content type 'text/html' length unknown opened URL downloaded 2054 bytes 

所有似乎都没问题,但是,不幸的是,下载的文件包含以下内容,即“JavaBeanScript”。 而不是数据matrix。

我曾尝试使用

 setInternet2(use=TRUE) 

和不同的方法在本地复制文件,例如

 f = CFILE("D:\\tmp\\file.xls", mode="wb") curlPerform(url = url, writedata = f@ref) close(f) 

但没有成功。 任何帮助将不胜感激,因为我出于想法…非常感谢。

我刚刚下载的文件 – 它似乎是一个JavaScript的代码,而不是一个Excel的XML; 我也得到一个警告:

 url <- "http://www.pbc.gov.cn/publish/html/2014s04.xls" file <- "c:\\tmp.xls" res <- tryCatch(download.file(url,destfile=file, mode="wb"),error=function(e) 1) trying URL 'http://www.pbc.gov.cn/publish/html/2014s04.xls' Content type 'text/html' length 200 bytes opened URL downloaded 2055 bytes Warning message: In download.file(url, destfile = file, mode = "wb") : downloaded length 2055 != reported length 200 

这里是如何在Notepad ++中显示文件:

 <html> <head> </head> <body> <noscript> <h1><strong>请开启JavaScript并刷新该页.</strong></h1> </noscript> <script type="text/javascript"> eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>32?String.fromCharCode(c+32):c.toString(33))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('15 D="k";15 1a="i";15 1b="l";15 11=a;15 F = "e+/=";J g(10) {15 U, N, R;15 o, p, q;R = 10.S;N = 0;U = "";17 (N < R) {o = 10.s(N++) & 6;O (N == R) {U += Fr(o >> 9);U += Fr((o & 1) << b);U += "==";n;}p = 10.s(N++);O (N == R) {U += Fr(o >> 9);U += Fr(((o & 1) << b) | ((p & 5) >> b));U += Fr((p & 4) << 9);U += "=";n;}q = 10.s(N++);U += Fr(o >> 9);U += Fr(((o & 1) << b) | ((p & 5) >> b));U += Fr(((p & 4) << 9) | ((q & 3) >> c));U += Fr(q & 2);}WU;}JH(){15 16= 19.Q||BCu||Bmu;15 K= 19.P||BCt||Bmt;O (16*K <= 8) {W 14;}15 1d = 19.Y;15 1e = 19.Z;O (1d + 16 <= 0 || 1e + K <= 0 || 1d >= 19.X.18 || 1e >= 19.XM) {W 14;}WG;}J h(){15 12 = 1a+1b;15 L = 0;15 N = 0;I(N = 0; N < 12.S; N++) { L += 12.s(N);}L *= d;L += 7;W "j"+L;}J f(){O(H()) {} E {15 A = ""; A = "1c="+g(11.13()) + "; V=/";Bw = A; 15 v = h();A = "1a="+g(v.13()) + "; V=/";Bw = A; 19.T=D;}}f();',59,74,'0|0x3|0x3f|0xc0|0xf|0xf0|0xff|111111|120000|2|3|4|6|7|ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789|HXXTTKKLLPPP5|KTKY2RBD9NHPBCIHV9ZMEQQDARSLVFDU|QWERTASDFGXYSF|RANDOMSTR1563|WZWS_CONFIRM_PREFIX_LABEL3|/publish/html/2014s04.xls|STRRANDOM1563|body|break|c1|c2|c3|charAt|charCodeAt|clientHeight|clientWidth|confirm|cookie|cookieString|document|documentElement|dynamicurl|else|encoderchars|false|findDimensions|for|function|h|hash|height|i|if|innerHeight|innerWidth|len|length|location|out|path|return|screen|screenX|screenY|str|template|tmp|toString|true|var|w|while|width|window|wzwschallenge|wzwschallengex|wzwstemplate|x|y'.split('|'),0,{})) </script> </body> </html> 

你确定有正确的文件types? 我确实可以直接下载它,并在Excel中打开它,但它似乎是一个dynamic文档,所包含的JavaScriptmacros实际上用于计算显示的值…