使用R中的html会话导航到链接

时间:2017-08-12 22:00:52

标签: html r rvest

我正在尝试导航到网站上的链接。除了一个链接外,所有链接都有效。结果如下。

> 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

知道为什么会这样发生吗?

1 个答案:

答案 0 :(得分: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.