2017-06-03 54 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