我一直在使用readLines()从R教程中的网站上刮取信息。我现在希望从我自己的网站(特别是awstats数据)提取数据,但该域名受密码保护。从受密码保护的网站读取信息
有没有一种方法可以将我需要的特定awstats数据通过网址传递给用户名和密码。
URL的格式为:
感谢。
我一直在使用readLines()从R教程中的网站上刮取信息。我现在希望从我自己的网站(特别是awstats数据)提取数据,但该域名受密码保护。从受密码保护的网站读取信息
有没有一种方法可以将我需要的特定awstats数据通过网址传递给用户名和密码。
URL的格式为:
感谢。
如果这确实是一个基本的HTTP访问认证,在connections
的文档提供了一些帮助:
网址
需要注意的是https://开头连接 只支持如果--internet2或 使用setInternet2(TRUE)(使 使用Internet Explorer内部), ,然后仅在证书被认为是有效的 时使用。只有 选项,还需要http://user:[email protected] 表示需要 验证的站点的符号。
所以你的URL字符串应该是这样的:
这可能是Windows的唯一,但。
希望这会有所帮助!
时可能会出现401未授权错误。甜,--internet2选项是个窍门。谢谢。 – John 2011-03-24 20:33:53
您可以在URL像嵌入用户名和密码:
这个你可以尝试用readLines()
使用。如果还是不行,您可以使用url()
打开连接总是尝试一种解决方法:
zz <- url("http://userid:[email protected]:port/...")
readLines(zz)
close(zz)
您也可以下载该文件并保存它使用的地方download.file()
download.file("theurl","/path/to/file/filename",method="wget")
这样可以节省文件在指定的本地路径上。
编辑:
为csgillespie说,你不应该包括你在脚本的用户名和密码。如果您用源脚本()或交互,您可以添加例如:
user <- readline("Give the username : ")
passw <- readline("Give the password : ")
Url <- paste("http://",user,":",passw,"@domain.name...")
readLines(Url,...)
当从命令行运行,你可以--args后传递参数,并使用commandArgs
访问它们(见?commandArgs
)
如果您有权访问该框,则可以随时阅读awstats日志文件。如果您可以使用ssh登录,那么您可以使用rsync
轻松同步最新的文件。
使用
http://username:[email protected]
轻微的障碍是,你是在R脚本把你的密码 - 最好避免这种情况。当然你可以保证它的脚本,但它只需要一个滑。例如,
用于警告。在使用例如readline()或者将其作为参数传递给脚本之后,在请求用户名和密码之后,应该创建url。但是“如果你有权访问这个盒子”需要一个来自外部的解决方案R. – 2011-03-24 14:51:27
@Joris:“来自R之外的解决方案” - 我确信R必须有'ssh'的库;)我怀疑OP可能会可以通过构造示例url的方式访问该框,但这只是一个猜测。 – csgillespie 2011-03-24 14:57:37
要完成它并不那么简单,并且非常依赖所涉及的机器和服务器的体系结构。我看到它发生的唯一方法是在R脚本中使用'system()',但这远非最佳解决方案,因为您不知道密码的问题...... – 2011-03-24 15:04:30
格式化网址为http://username:[email protected]
与download.file
使用了我没有工作,但R.utils
提供的功能downloadFile
完美的作品:
require(R.utils)
downloadFile(myurl, myfile, username = "myusername", password ="mypassword")
请参阅@ joris-meys答案,以避免在脚本中以明文形式包含您的用户名和密码。
编辑除了看起来像downloadFile
只是将URL重新格式化为http://username:[email protected]
?嗯...
这是一个http基本认证?也就是说,你会在弹出的窗口中看到密码提示,并且在输入错误的密码 – Martin 2011-03-24 14:26:12