2017-07-28 232 views
0

我需要登錄此網站http://bit.do爲刮。數據由密碼保護,但我無法弄清楚如何登錄訪問他們R.如何從本網站刮取數據?

我試圖

library (rvest) 

url  <-"http://bit.d o/#login/admin" 
pgsession <-html_session(url)    
pgform <-html_form(pgsession)[[1]]  


filled_form <- set_values(pgform, 
'username' = "test0001", 
'password' = "qwerty1234") 

submit_form(pgsession,filled_form) 

url <- 'http://bit.d o/admin/url/http%3A||2F||2Fedition.cnn.com||2F2017||2F07||2F21||2Fopinions||2Ftrump-russia-putin-lain-opinion||2Findex.html' 
data_page <- read_html(url) 
data_link<- html_nodes(data_page,'td > a') 
data_click<- html_nodes(data_page,'td span:nth-child(1)') 

,但我得到這樣那樣的錯誤

Submitting with 'NULL' 
Error in xml2::url_absolute(form$url, session$url) : 
Not compatible with STRSXP: [type=NULL]. 

如何我可以做嗎?這些是我的測試憑證用戶名:test0001,密碼:qwerty1234。這裏有一個我想抓取的受保護數據的例子http://bit.d o/admin/url/http%3A || 2F || 2Fedition.cnn.com || 2F2017 || 2F07 || 2F21 || 2Fopinions || 2Ftrump-russia-putin-躺在-意見|| 2Findex.html

重要提示:請注意,由於StackOverflow的限制之我把d和O之間的空間在域名

回答

1

由於形態沒有url場,當你調用一個submit_form(pgsession, filled_form)致電xml2::url_absolute(form$url, session$url)發生不起作用,因爲form$urlNULL。爲了克服這個問題,您需要給form$url給出一個值 - 即使它是空的 - 由url_absolute調用。嘗試添加以下行您填充後的filled_formset_values

filled_form$url <- '' 
+0

謝謝您的回答@Oriol。我試圖 'filled_form < - 函數set_values(pgform, '用戶名'= 「test0001」, '密碼'= 「qwerty1234」) filled_form $網址< - '' submit_form(pgsession,filled_form)' 和我得到 ' http://bit.do/?username=test0001&password=qwerty1234&NULL=Login Status:200 Type:text/html; charset = UTF-8 大小:34650' 不幸的是它不起作用:( –

+0

嗯......我很困惑,你的登錄狀態爲200.這不是說你登錄成功嗎?是的問題? –

+0

儘管200的狀態登錄是不成功的,並且scraping返回沒有數據。你可以看到它自己,我寫了我的測試憑據上述 –