从受密码保护的站点读取信息

Joh*_*ohn 13 r

我一直在使用readLines()从R教程中的网站中获取信息.我现在希望从我自己的网站(特别是awstats数据)中提取数据,但该域名受密码保护.

有没有办法可以使用用户名和密码传递我需要的特定awstats数据的URL.

网址的格式是:

http://domain.name:port/awstats.pl?month=02&year=2011&config=domain.name&lang=en&framename=mainright&output=alldomains

谢谢.

Mar*_*tin 8

如果确实是http基本访问身份验证,则文档connections提供了一些帮助:

网址

请注意,仅当使用--internet2或setInternet2(TRUE)(以使用Internet Explorer内部)时才支持https://连接,并且仅当证书被认为有效时才支持.仅使用该选项, 还接受需要身份验证的站点http:// user:pass @ site表示法.

所以你的URL字符串应如下所示:

HTTP://用户名:password@domain.name:端口/ awstats.pl月= 02&年= 2011&配置= domain.name&LANG = EN&framename = mainright&输出= alldomains

这可能只是Windows版本.

希望这可以帮助!


Jor*_*eys 7

您可以在网址中嵌入用户名和密码,例如:

http:// userid:passw@domain.name:port / ...

这可以尝试使用readLines().如果这不起作用,您可以尝试使用url()打开连接的变通方法:

zz <- url("http://userid:passw@domain.name:port/...")
readLines(zz)
close(zz)
Run Code Online (Sandbox Code Playgroud)

您也可以下载该文件并使用它保存 download.file()

download.file("theurl","/path/to/file/filename",method="wget")
Run Code Online (Sandbox Code Playgroud)

这会将文件保存在指定的本地路径上.

编辑:

正如csgillespie所说,你不应该在脚本中包含你的用户名和密码.如果您使用source()或交互式运行脚本,您可以添加例如:

user <- readline("Give the username : ")
passw <- readline("Give the password : ")

Url <- paste("http://",user,":",passw,"@domain.name...")
readLines(Url,...)
Run Code Online (Sandbox Code Playgroud)

从命令行运行时,您可以在--args之后传递参数并使用commandArgs(参见?commandArgs)访问它们