0
我試圖登錄登錄到bondora.com用,使用R HTTR POST請求,因爲這個網站似乎沒有使用身份驗證:[R HTTR POST請求爲
library(httr)
login <- "https://www.bondora.com/en/login"
pars <- list(
username = "MyUserName",
password = "MyPassword"
)
POST(login, body = pars)
登錄後,網站將用戶引導回到登陸頁面bondora.com/en/home,而是如果我解析POST請求我得到相同的頁面標題作爲一個從登錄頁面:
library(XML)
test <- POST(login, body = pars)
test <- content(test, as = "text")
parsedHtml <- htmlParse(test, asText = TRUE)
xpathSApply(parsedHtml, "//title", xmlValue)
[1] "Join or log in|Loans and investing|Bondora"
我試着在其他一些網站上使用相同的技術,它似乎工作得很好,除了這個網站。從POST命令的輸出如下:
POST(login, body = pars)
Response [https://www.bondora.com/en/login]
Status: 200
Content-type: text/html; charset=utf-8
<!DOCTYPE HTML>
<html xmlns="http://www.w3.org/1999/xhtml">
...
我還應該用於登錄到bondora.com/en/login使用一些特定的設置?
更新1 按照@hadley評論,我累了設置多真假,但沒有幫助。然後,我通過檢查瀏覽器的請求,並添加相同的標題:
login <- "https://www.bondora.com/en/authenticate"
pars <- list(
username = "username",
password = "password"
)
headers <- list(
"User-Agent" = "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:28.0) Gecko/20100101 Firefox/28.0",
"Referer" = "https://www.bondora.com/en/login?returnurl=/en/home",
"Host" = "www.bondora.com",
"Connection" = "keep-alive",
"Accept-Language" = "en-US,en;q=0.5",
"Accept-Encoding" = "gzip, deflate",
"Accept" = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
)
POST(login, body = pars, add_headers(.headers = character(headers)))
Error in character(headers) : invalid 'length' argument
看來,我需要爲做了HTML錯誤411指示指定長度參數。我應該怎麼做?我也嘗試將Content-Length = 9844
添加到請求標題中,因爲它在響應標題中,但也沒有成功。
好奇,爲什麼你會想從R鍵登錄?也許你的''pars'對象需要首先作爲json,所以'POST(login,body = toJSON(pars))' – sckott
我想登錄刮一些消費者信用數據。我嘗試過toJSON,但結果仍然相同。 – Siim
如果你看HTML,表單POST到「/ en/authenticate」,而不是「/ en/login」 – hadley