使用httr包中的Post()来捕获R中的href

时间:2018-05-30 15:19:17

标签: javascript r rvest httr

目前我正试图捕捉特定网页上列出的不同事件的href。此页面的内容由JavaScript生成,有两页。抓取并处理第一页没什么大不了的,但是我无法抓取第二页。 我已经尝试使用httr中的post()方法,但已爬网的数据仍然是第一页的内容。 这是我的代码:

library(rvest)
library(tidyverse)
library(stringr)
library(httr)
library(dplyr)
res <- POST("http://www.pg-sanderau.de/aktuelles---termine/#page2",
     encode="form",
     user_agent("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.50 Safari/537.36"),
     add_headers(`Referer`="http://www.pg-sanderau.de/aktuelles---termine/#page2"))
res_t <- content(res, as="text")
res_h <- paste0(unlist(strsplit(res_t, "\r\n"))[-1], sep="", collapse="\n")
res_h %>%
  read_html() %>%
  html_nodes(".itemtitle a")%>%
  html_attr("href") -> Links1
Links1 <- data.frame(Links1)

所以我的数据框包含第一页上的十个hrefs&#34; http://www.pg-sanderau.de/aktuelles---termine/#page1&#34;但不是第二页的最后四个。我使用了错误的包裹还是我的方法不正确?

非常有帮助会很棒! 感谢

2 个答案:

答案 0 :(得分:0)

如果网址为page1,则网页始终加载page2并通过javascript加载#page2。您可以查看网络标签以获取url从哪个页面获取第2页的信息

答案 1 :(得分:0)

好的PhantomJS对我来说很好。