2016-08-16 35 views
0

我想從不同搜索中提取this website的超鏈接(不要害怕它是丹麥文)。超鏈接可以在右側找到(v15,v14,v13等)[example]。 我試圖抓取的網站使用某種jQuery/JavaScript的搜索結果。這是基於我的非常有限的在HTML中的知識,可能是錯誤的。刮R包含JS/jquery代碼的網站

我覺得這個事實使下面的代碼無法運行(我用的是「rvest」 -package):

sdslink="http://karakterstatistik.stads.ku.dk/#searchText=&term=&block=&institute=null&faculty=&searchingCourses=true&page=1" 
s_link = recs %>% 
read_html(encoding = "UTF-8") %>% 
html_nodes("#searchResults a") %>% 
html_attr("href") 

我已經找到一個可行的方法,但它要求我用手動下載頁面「右鍵單擊」+「另存爲」每頁。然而,這是不可行的,因爲我想總共刮掉超過100頁的超鏈接。

我試圖用jsonlite軟件包結合httr,但我無法找到正確的.json文件。

我希望你們可以有一個解決方案,讓jsonlite工作,自動化「另存爲」解決方案或第三個更聰明的路徑。

回答

2

一種方法是使用RSelenium。這裏有一些簡單的代碼來幫助你開始。我假設你已經安裝了RSelenium和一個webdriver。導航到感興趣的網站:

library(RSelenium) 
startServer() 
remDr <- remoteDriver(remoteServerAddr = "localhost", port = 4444, 
         browserName = "chrome") 
remDr$open(silent = TRUE) 
remDr$navigate("http://karakterstatistik.stads.ku.dk/") 

找到submit按鈕,通過檢查源:

webElem <- remDr$findElement("name", "submit") 
webElem$clickElement() 

儲存的第5頁:

html_source <- vector("list", 5) 
i <- 1 
while (i <= 5) { 
    html_source[[i]] <- remDr$getPageSource() 
    webElem <- remDr$findElement("id", "next") 
    webElem$clickElement() 
    Sys.sleep(2) 
    i <- i + 1 
} 
remDr$close() 
+0

感謝一大堆的幫助是**正是我所需要的**。在我能夠開始工作之前,必須先看一下Selenium。 [這個答案](http://stackoverflow.com/a/31188481/6717092)另一個問題是非常有用的,如果其他人遇到安裝問題。 – ScrapeGoat

+0

不客氣 - 如果您的問題已得到滿意答覆,請將答案標記爲已接受。 –

+0

完成並致謝。我有一個相當快速的[後續問題](http://stackoverflow.com/q/38991773/6717092) – ScrapeGoat