2016-06-21 75 views
0

我試圖在R中使用getURLContent()或HTMLParse()從網站獲取html。問題在於頁面加載速度緩慢並且在幾個塊中。從URL抓取HTML代碼,需要延遲才能完全加載網頁

看起來這兩個選項都會停止並在網頁第一部分加載後返回代碼。這使得HTML在另一個5-10秒內會丟失大部分的內容。

我需要一種方法來啓動解析,但它會延遲運行時給頁面加載時間。我研究了這兩個選項的文獻,並沒有找到任何選擇。

有沒有人知道它是否可能或可能解決此問題?

謝謝!

回答

1

通常,這個問題來自於使用Ajax的頁面(在幾個較量中加載頁面)。很難說,沒有更多的信息。

一個通常可行的解決方案是使用RSelenium,通過打開firefox/explorer/chrome頁面來模擬「真實」用戶。

# selenium proper 
library(RSelenium) 
# rvest to convert to xml for easier parsing 
library(rvest) 

# start a server and open a navigator (firefox by default) 
startServer() 
driver <- remoteDriver() 
driver$open() 

# go to google 
driver$navigate("http://www.google.com") 

# get source code 
page <- driver$getPageSource() 

# convert to xml for easier parsing 
page_xml <- read_html(page[[1]]) 
+0

獲取以下錯誤。不知道如何解決它。有任何想法嗎? > driver $ open() [1]「連接到遠程服務器」 RCurl調用中未定義的錯誤。 查詢錯誤(paste0(serverURL,「/ session」),「POST」,qdata = toJSON(serverOpts)) – bpheazye

+1

嘗試用chrome運行它,而不是:,需要下載chromedriver,然後startServer(args = c(「 -Dwebdriver.chrome.driver = path/chromedriver.exe「)) driver < - remoteDriver(browserName =」chrome「) driver $ open() – Choubi