我一直在使用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