r
  • web-scraping
  • downloading
  • 2015-05-05 38 views 0 likes 
    0

    我正在尝试批量下载一系列网址。到目前为止,我的代码是在R中搜索一系列网址

    link <- paste("http://portal.hud.gov/hudportal/documents/huddoc? id=RAD_PHAApp_", state, ".xls", sep = "") 
    state <- c('al','tx') 
    download.file(link, paste(destfile = 'Y:\\PBlack\\RAD\\', state, '.xls', sep = ""), mode = 'wb') 
    

    的想法在这里,我可以名称添加到状态值,它会下载并命名它们的状态。

    R运行代码时返回以下内容。

    Warning messages: 
    1: In download.file(link, paste(destfile = "Y:\\PBlack\\RAD\\", state, : 
    only first element of 'url' argument used 
    2: In download.file(link, paste(destfile = "Y:\\PBlack\\RAD\\", state, : 
    only first element of 'destfile' argument used 
    
    +0

    是否应该在第一个URL中的'huddoc?'和'id'之间存在空格? – TARehman

    回答

    0

    由于TARehman所指出的,你需要有单独的呼叫download.file为每个文件。使用for循环可能会更直观。

    此外,使用paste0将避免每次都使用sep =“”。

    states <- c('al', 'tx') 
    
    for(state in states) { 
        link <- paste0("http://portal.hud.gov/hudportal/documents/huddoc?id=RAD_PHAApp_", state, ".xls") 
        download.file(link,paste0("~/Desktop/",state,".xls"),mode='wb') 
    } 
    

    虽然应变可能会稍微快一点。

    +0

    得到这个工作谢谢!到目前为止,我可以理解这个级别的代码,所以我喜欢这个功能。帮助我学到很多东西。 –

    1

    您需要调用命令来多次保存文件。现在它不会工作,因为download.file()函数下载单个文件,而不是文件的矢量。

    像这样:

    states <- c('al','tx') 
    links <- paste("http://portal.hud.gov/hudportal/documents/huddoc?id=RAD_PHAApp_", states, ".xls", sep = "") 
    
    func.download_files <- function(link,state) { 
    
        download.file(link,paste("~/Desktop/",state,".xls",sep=""),mode='wb') 
    } 
    
    mapply(FUN = func.download_files,link=links,state=states) 
    
    +0

    试过运行这段代码。另一方面,我做了一个data.frame,其中包含我需要的所有州名(例如'AL','TX','MA) links < - paste(“http://portal.hud.gov/hudportal/documents/huddoc?id = RAD_PHAApp_“,states,”.xls“,sep =”“) func.download_files < - function(link,state)download.file(link,paste(”C:/用户/ VT8575P /桌面/“,状态,”。xls“,sep =”“),mode ='wb') } –

    +0

    警告消息: 在download.file(链接,粘贴(“C:/用户/ VT8575P /桌面/”,状态,: 只使用'destfile'参数的第一个元素 –

    +0

    'huddoc?'之间仍有空格?和'id = RAD_PHAApp_'冷杉所有的。如果你在data.frame中创建了'states',那么这将不起作用。该函数期望'states'将是一个向量。 – TARehman

    相关问题