我一直在使用readLines()从R教程中的网站上抓取信息。我现在希望从我自己的网站(特别是awstats数据)中提取数据,但该域名受密码保护。
有没有办法可以使用用户名和密码传递我需要的特定awstats数据的URL。
网址格式为:
感谢。
答案 0 :(得分:7)
如果它确实是一个http基本访问身份验证,connections
上的文档提供了一些帮助:
网址
请注意,https://连接是 仅在--internet2或 使用setInternet2(TRUE)(制作 使用Internet Explorer内部), 然后只有证书是 被认为是有效的。接着就,随即 仅限选项,http://user:pass@site 需要的网站的表示法 身份验证也被接受。
因此,您的网址字符串应如下所示:
但这可能仅限于Windows。
希望这有帮助!
答案 1 :(得分:7)
您可以在网址中嵌入用户名和密码,例如:
您可以尝试使用readLines()
。如果这不起作用,您可以使用url()
尝试解决方法来打开连接:
zz <- url("http://userid:passw@domain.name:port/...")
readLines(zz)
close(zz)
您也可以使用download.file()
download.file("theurl","/path/to/file/filename",method="wget")
这会将文件保存在指定的本地路径上。
编辑:
正如csgillespie所说,你不应该在脚本中包含你的用户名和密码。如果您使用source()或交互式运行脚本,则可以添加eg:
user <- readline("Give the username : ")
passw <- readline("Give the password : ")
Url <- paste("http://",user,":",passw,"@domain.name...")
readLines(Url,...)
从命令行运行时,您可以在--args之后传递参数并使用commandArgs
访问它们(请参阅?commandArgs
)
答案 2 :(得分:3)
如果您可以访问该框,则可以随时阅读awstats日志文件。如果您可以插入框中,则可以使用rsync
轻松同步最新文件。
使用
的轻微障碍http://username:password@domain...
是您将密码放在R脚本中 - 最好避免这种情况。当然你可以保护脚本,但它只需要一个单据。例如,
答案 3 :(得分:2)
将网址格式设置为http://username:password@domain...
以便与download.file
一起使用对我不起作用,但R.utils
提供了完美运行的功能downloadFile
:
require(R.utils)
downloadFile(myurl, myfile, username = "myusername", password ="mypassword")
请参阅@ joris-meys答案,以避免在脚本中以纯文本形式包含您的用户名和密码。
编辑除了downloadFile
看起来只是将网址重新格式化为http://username:password@domain...
?嗯...