r - 使用 rvest 进行网页抓取适用于网站的第一页,但不适用于其他网页
问题描述
这是我用来获取网站下一页链接的代码。
url <- 'https://uws-community.symplicity.com/index.php?s=student_group'
webpage <- read_html(url)
next_link <- html_nodes(webpage,".paging_nav a") %>% html_attr('href')
然后,使用该链接,我试图在那之后获得下一页。
url2 <- paste0("https://uws-community.symplicity.com/index.php",
next_link)
webpage2 <- read_html(url2)
next_link2 <- html_nodes(webpage2,".paging_nav a") %>% html_attr('href')
第二部分为我提供了 next_link2 的“字符(空)”。为什么是这样?为什么相同的方法在第一页上有效,而在第二页上无效?
解决方案
该站点设置了一些 cookie,您需要在下一次抓取时重复使用它们。
library(rvest)
url <- 'https://uws-community.symplicity.com/index.php?s=student_group'
page <- html_session(url)
page2 <- page %>% follow_link(css = ".paging_nav a:last-child")
page3 <- page2 %>% follow_link(css = ".paging_nav a:last-child")
page3 %>% html_nodes(".grpl-grp")
这将从第三页返回表格。
推荐阅读
- jquery - 如何使用 angular.element 而不是 jQuery?
- machine-learning - 矢量化问题
- google-apps-script - 在 Google 日历中创建一个“免费”活动(而不是默认的“忙碌”)
- r - 在 tsibble 中设置索引
- c++ - 使用 MINGW gcc 编译时,不会为 std::string 调用重载的 new 运算符
- javascript - 如何防止“Fullcalendar”显示的日期和时间小于现在
- php - PHP在IF子句中组合逻辑运算符
- authentication - 为什么在 11n 中需要两个聚合(A-MSDU&A-MPDU)
- python - Splitting a date format
- spring - 在 Spring Cloud Gateway 中自定义请求