【问题标题】:Downloading files from ftp with R使用 R 从 ftp 下载文件
【发布时间】:2016-04-15 11:04:58
【问题描述】:

我正在尝试从此 FTP 获取文件

ftp://ftp.pride.ebi.ac.uk/pride/data/archive/2015/11/PXD000299/

从那里,我只需要以 .dat 扩展名开头的文件。但还有其他文件我不感兴趣。

我想避免一次下载每个,所以我想创建一个带有名称的向量并循环它们。

我怎样才能只下载我想要的文件?

谢谢

编辑: 我尝试过以下操作

downloadURL <- "ftp://ftp.pride.ebi.ac.uk/pride/data/archive/2015/11/PXD000299/F010439.dat"
download.file(downloadURL, "F010439.dat") #this is a trial using one file

几秒钟后我收到以下错误:

trying URL 

    'ftp://ftp.pride.ebi.ac.uk/pride/data/archive/2015/11/PXD000299/F010439.dat'
    Error in download.file(downloadURL, "F010439.dat") : 
      cannot open URL 'ftp://ftp.pride.ebi.ac.uk/pride/data/archive/2015/11/PXD000299/F010439.dat'
    In addition: Warning message:
    In download.file(downloadURL, "F010439.dat") :
      InternetOpenUrl failed: 'Die FTP-Sitzung wurde beendet.

'

【问题讨论】:

    标签: r ftp web-scraping


    【解决方案1】:

    使用curl库提取目录列表

    > library(curl)
    > url = "ftp://ftp.pride.ebi.ac.uk/pride/data/archive/2015/11/PXD000299/"
    > h = new_handle(dirlistonly=TRUE)
    > con = curl(url, "r", h)
    > tbl = read.table(con, stringsAsFactors=TRUE, fill=TRUE)
    > close(con)
    > head(tbl)
                                                     V1
    1  12-0210_Druart_Uterus_J0N-Co_1a_ORBI856.raw.mzML
    2  12-0210_Druart_Uterus_J0N-Co_2a_ORBI857.raw.mzML
    3  12-0210_Druart_Uterus_J0N-Co_3a_ORBI858.raw.mzML
    4 12-0210_Druart_Uterus_J10N-Co_1a_ORBI859.raw.mzML
    5 12-0210_Druart_Uterus_J10N-Co_2a_ORBI860.raw.mzML
    6 12-0210_Druart_Uterus_J10N-Co_3a_ORBI861.raw.mzML
    

    将相关的粘贴到网址上并使用

    urls <- paste0(url, tbl[1:5,1])
    fls = basename(urls)
    curl_fetch_disk(urls[1], fls[1])
    

    【讨论】:

    • 要添加到这个已经很好的答案,您可以使用curl::curl_download() 保存文件。
    猜你喜欢
    • 2017-10-07
    • 1970-01-01
    • 2014-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-05
    • 1970-01-01
    相关资源
    最近更新 更多