我试图使用request请求登录bondora.com,因为这个站点似乎没有使用身份验证:
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按@评论,我厌倦了设置多部分真和假,但没有帮助。然后,我通过浏览器检查了请求并添加了相同的标题:
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添加到请求头中,就像它在响应头中一样,但也没有成功。
发布于 2014-09-08 20:05:35
我能够通过将httr_0.4升级到httr_0.5来解决这个问题。
https://stackoverflow.com/questions/23202522
复制相似问题