2017-08-12 13 views
0

ウェブサイトのリンクに移動しようとしています。 1つのリンクを除き、すべてのリンクが機能します。ここに結果があります。Rセッションでhtmlセッションに移動するR

> mcsession<-html_session("http://www.moneycontrol.com/financials/tataconsultancyservices/balance-sheetVI/TCS#TCS") 

> mcsession<-mcsession %>% follow_link("Previous Years »") 
Error: No links have text 'Previous Years »' 
In addition: Warning message: 
In grepl(i, text, fixed = TRUE) : input string 316 is invalid UTF-8 

> mcsession<-mcsession %>% follow_link("Balance Sheet") 
Navigating to /financials/tataconsultancyservices/balance-sheetVI/TCS#TCS 
Warning message: 
In grepl(i, text, fixed = TRUE) : input string 316 is invalid UTF-8 

これはどうして起こるのでしょうか?

+0

このページを見ると、通常のリンクをターゲットにしていないことがわかります。実際、「前年」をクリックしても新しいページは読み込まれず、代わりに 'post_prevnext()'というjavascript関数が返されます。私が知る限り、 'rvest'は実際に別のページへのリンクではないので、そのリンクに従うことはできません。私はあなたの最善の策は、あなたが望むことをするためにプログラムでページをナビゲートするために 'RSelenium'を使うことだと思います。 –

答えて

2

通常のリンクではありません.JavaScriptです。私はrvestでそれを行う方法を知らないが、基本的には通常のブラウザウィンドウを自動化するRSeleniumを使うことができる。直接手をこするよりも時間がかかりますが、手作業で行うことができるものはすべて自動化できます。これは私のために働きます(Windows 10でChromeを使用)...

library(RSelenium) 
rD <- rsDriver(port=4444L,browser="chrome") 
remDr <- rD$client 

remDr$navigate("http://www.moneycontrol.com/financials/tataconsultancyservices/balance-sheetVI/TCS#TCS") 

firstpage <- remDr$getPageSource() #you can use this to get the first table 

#(1) 
webElem1 <- remDr$findElement(using = 'partial link text', value = "Previous Years") 
webElem1$clickElement() 

nextpage <- remDr$getPageSource() #you can use this to get the next page for previous years 

#repeat from #(1) to go back another page etc 

remDr$closeall() #when you have finished. 
関連する問題