如何通过R从互联网下载文件

6

我有一个URL,想要通过R下载文件。我注意到download.file可能会有帮助,但我的问题似乎有所不同:

url <- "http://journal.gucas.ac.cn/CN/article/downloadArticleFile.do?attachType=PDF&id=11771"
destfile <- "myfile.pdf"
download.file(url, destfile)

它不起作用!我注意到如果我的url是以xxx.pdf的形式出现,那么上面的代码没有问题,否则下载的文件就会损坏。
有人知道如何解决这个问题吗?

2
请定义“不起作用”。我可以使用download.file下载文件,并使用PDF阅读器打开它,因此我无法重现您的问题。我的第一个猜测是您在Web代理后面... - Paul Hiemstra
1
我运行了代码,可以得到文件“myfile.pdf”,但是当我点击文件“myfile.pdf”时,无法打开它,所以我认为可能我没有以正确的方式下载它。 - PepsiCo
下载对我来说也很顺利,我可以打开PDF文件。不过,PDF文件是中文的,也许你只是缺少中文字体? - nico
2个回答

9

在保存文件时,可能需要将模式设置为二进制数据处理。如果我省略该参数,则会得到一个空文件,但是以这种方式可以正常工作:

url <- "http://journal.gucas.ac.cn/CN/article/downloadArticleFile.do?
attachType=PDF&id=11771"
destfile <- "myfile.pdf"
download.file(url, destfile, mode="wb")

你能指定你的操作系统和R版本吗?当使用“internal”方法时,“mode”参数才会被使用。默认方法是“auto”,所以我怀疑它可能取决于操作系统。我在FC18 64位下使用R 3.0.2下载文件没有问题。 - nico
平台 x86_64-w64-mingw32
架构 x86_64
操作系统 mingw32
系统 x86_64, mingw32
状态
主版本号 3
次版本号 0.2
年份 2013
月份 09
日期 25
svn版本 63987
- Troy
我认为可能与ISP如何传输http二进制流有关,这可以解释为什么对于一些人而言,在没有强制模式的情况下可以正常工作,而对于其他人则不行。 - Troy
1
我需要添加 method='curl' 以避免得到损坏的 PDF。RStudio 版本为 0.98.1103,R 3.1.2 在 Windows 上运行。 - mfrellum
我使用了所有这些方法,但仍无法创建可用的文件。它在尝试打开时失败了。 - SqueakyBeak

-2

我正在尝试使用R下载nc文件。下载很好,但是当我尝试打开文件时出现以下错误:

Error in R_nc4_open: NetCDF:未知的文件格式Error in nc_open("SM_D2010323_Map_SATSSS_data_1day.nc") : 在尝试打开文件SM_D2010323_Map_SATSSS_data_1day.nc 时出现错误(return_on_error= FALSE)

url <- "https://www.star.nesdis.noaa.gov/data/socd1/coastwatch/products/miras/nc/SM_D2010323_Map_SATSSS_data_1day.nc"
destfile <- "***/SM_D2010323_Map_SATSSS_data_1day.nc"
download.file(url, destfile)
nc_data <- nc_open('SM_D2010323_Map_SATSSS_data_1day.nc')

但是,当我在浏览器上使用相同的URL时,我可以在R中无任何问题地打开该文件。


抱歉,这与主题无关,请提出您自己的问题 :) - Dorian Grv

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接