Ant*_*ico 6 r web-scraping rcurl httr
我正在尝试下载一个1.1千兆字节的文件,httr但我遇到以下错误:
x <- GET( extract.path )
Error in curlPerform(curl = handle$handle, .opts = curl_opts$values) :
cannot allocate more space: 1728053248 bytes
Run Code Online (Sandbox Code Playgroud)
我的C盘有400GB免费..
在RCurl包中,我看到maxfilesize和maxfilesize.large使用时的选项,getCurlOptionsConstants()但我不明白是否/如何传递httr通过config或set_config..或如果我需要切换到RCurl这... ..即使我确实需要切换,会增加最大文件大小的工作吗?
这是我的sessionInfo ..
> sessionInfo()
R version 3.0.0 (2013-04-03)
Platform: i386-w64-mingw32/i386 (32-bit)
locale:
[1] LC_COLLATE=English_United States.1252 LC_CTYPE=English_United States.1252 LC_MONETARY=English_United States.1252 LC_NUMERIC=C LC_TIME=English_United States.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] XML_3.96-1.1 httr_0.2
loaded via a namespace (and not attached):
[1] digest_0.6.0 RCurl_1.95-4.1 stringr_0.6.2 tools_3.0.0
Run Code Online (Sandbox Code Playgroud)
..并且(这不推荐,只是因为它会花费你一段时间)如果你想重现我的错误,你可以去https://usa.ipums.org/usa-action/samples,注册一个新的帐户,选择2011年5年的acs提取,添加大约一百个变量,然后等待提取准备好.然后编辑前三行并运行下面的代码.(再次,不推荐)
your.email <- "email@address.com"
your.password <- "password"
extract.path <- "https://usa.ipums.org/usa-action/downloads/extract_files/some_file.csv.gz"
require(httr)
values <-
list(
"login[email]" = your.email ,
"login[password]" = your.password ,
"login[is_for_login]" = 1
)
POST( "https://usa.ipums.org/usa-action/users/validate_login" , body = values )
GET( "https://usa.ipums.org/usa-action/extract_requests/download" , query = values )
# this line breaks
x <- GET( extract.path )
Run Code Online (Sandbox Code Playgroud)
GET调用httr:::make_request此设置中定义的curl选项config = list()。然而,选项似乎writefunction被硬编码在“httr”中
opts$writefunction <- getNativeSymbolInfo("R_curl_write_binary_data")$address
Run Code Online (Sandbox Code Playgroud)
您可能需要使用 RCurl 并定义适当的“writefunction”。以下解决方案在 RCurl 中创建 C 级文件句柄以写入从 @Martin Morgan 下载的文件似乎是可行的方法。
| 归档时间: |
|
| 查看次数: |
631 次 |
| 最近记录: |