如何正确使用rvest进行网页抓取?

时间:2017-06-03 17:09:27

标签: r web-crawler rvest

我尝试对此页面进行网页抓取http://www.funda.nl/en/koop/leiden/以获取可以显示的最大页面,即29。我按照了一些在线教程并找到了html代码中的29,写了这个R代码

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)

这是怎么做到的?

2 个答案:

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

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