18
我正在嘗試使用rvest來抓取表單上需要電子郵件/密碼登錄的網頁。使用rvest或httr登錄到網頁上的非標準表單
rm(list=ls())
library(rvest)
### Trying to sign into a form using email/password
url <-"http://www.perfectgame.org/" ## page to spider
pgsession <-html_session(url) ## create session
pgform <-html_form(pgsession)[[1]] ## pull form from session
set_values(pgform, `ctl00$Header2$HeaderTop1$tbUsername` = "[email protected]")
set_values(pgform, `ctl00$Header2$HeaderTop1$tbPassword` = "mypassword")
submit_form(pgsession,pgform,submit=`ctl00$Header2$HeaderTop1$Button1`)
這使我有以下錯誤信息:
Error in submit_request(form, submit) :
對象ctl00 $頭2 $ HeaderTop1 $ Button1的'未找到
如果我提交表單不指定提交的參數,我得到這個:
Submitting with 'ctl00$Header2$HeaderTop1$Button1'
Error in function (type, msg, asError = TRUE) : <url> malformed
我也試着將參數直接傳遞給httr,如上所述在這個問題:How can I POST a simple HTML form in R?,但「提交」參數不接受要麼向後引號(``),引號提交按鈕,或者不帶任何引號:
library(httr)
url <- "http://www.perfectgame.org/Rankings/Players/Default.aspx?gyear=2015&num=500"
fd <- list(
submit = `ctl00$Header2$HeaderTop1$Button1`,
`ctl00$Header2$HeaderTop1$tbUsername` = "[email protected]",
`ctl00$Header2$HeaderTop1$tbPassword` = "mypassword")
resp<-POST(url, body=fd, encode="form")
content(resp)
對我如何可以登錄任何想法從R會話中抓取登錄牆後面的數據?
嗨,非常感謝您的答覆 - 從您的解決方案中,我現在明白您必須將填充表單保存爲R中的對象,而不是將它傳遞給會話。然而,我似乎無法複製你的200狀態碼 - 我運行上面的代碼,並得到上面列出的同樣的錯誤'「提交'ctl00 $ Header2 $ HeaderTop1 $ Button1' 函數錯誤(type,msg,asError = TRUE):格式不正確「' 任何想法有什麼區別? –
gbostock
2015-03-25 20:17:23
編輯:我上傳到最新版本的R(3.1.3)並收到相同的消息。謝謝!我會看看並報告回來。 – gbostock 2015-03-25 20:30:33
這工作完美。再次感謝! – gbostock 2015-03-26 16:55:48