2017-06-03 55 views
0

我嘗試網頁抓取這個頁面http://www.funda.nl/en/koop/leiden/獲得最大頁面就可以顯示這是29.我跟一些在線教程和所在的位置29是在HTML代碼,寫這個R代碼裏面如何使用rvest正確地抓取網頁?

url<- read_html("http://www.funda.nl/en/koop/leiden/") 

url %>% html_nodes("#pagination-number.pagination-last") %>% html_attr("data- 
pagination-page") %>% as.numeric() 

然而,我得到的是numeric(0)。如果我刪除as.numeric(),我得到character(0)

這是如何完成的?

+0

嘗試使用此代替:'url%>%html_nodes(「a.pagination-number.pagination-last」)' – Dave2e

回答

0

我相信你對html的識別和對html的解析都是錯誤的。要輕鬆找到CSS ID的名稱,可以使用名爲Selector Gadget的Chrome擴展。在你的情況下,它也需要一些解析,在str_extract_all()函數中完成。

這將工作:

url <- read_html("http://www.funda.nl/en/koop/leiden/") 

pagination.last <- url %>% 
    html_node(".pagination-last") %>% 
    html_text() %>% 
    stringr::str_extract_all("[:number:]{1,2}", simplify = TRUE) %>% 
    as.numeric() 

> pagination.last 
[1] 29 

您可能會發現此的其他問題有幫助,以及:R: Rvest - got hidden text i don't want

+0

感謝您的回答,但似乎我無法重現結果。我複製代碼並生成NA。所有軟件包和Rstudio都是最新的。在這一步中,url%>%html_node(「。pagination-last」)%>%html_text()。它已經生成了NA,發生了什麼?我錯過了什麼? – Lazar

+0

試'> STR(URL)',看看它是否輸出該: $節點列表: $ DOC: - ATTR(*, 「類」)= CHR [1:2] 「xml_document」 「xml_node」 如果沒有,那麼讀取html的第一步就會出錯 – ZLevine

0

我一直在處理這個同樣的問題,這個工作對我來說:

> url = "http://www.funda.nl/en/koop/leiden/" 
> last_page <- 
+ last(read_html(url) %>% 
+   html_nodes(css = ".pagination-pages") %>% 
+   html_children()) %>% 
+ html_text(trim = T) %>% 
+ str_extract("[0-9]+") %>% 
+ as.numeric() 
> last_page 
[1] 23