You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

单URL下如何用RSelenium抓取需点击箭头翻页的动态页面?

抓取英超官网分页扑救数据的解决方案

问题说明

已通过RSelenium抓取英超官网扑救数据第一页(https://www.premierleague.com/stats/top/players/saves),但第二页无独立URL,需点击分页箭头切换,需实现第二页数据抓取并合并。

解决方案步骤与代码

1. 定位并点击下一页按钮

先定位页面中的下一页箭头按钮,通过RSelenium模拟点击操作完成页面切换。注意需等待按钮加载完成,避免元素未找到报错。

2. 抓取第二页数据

切换页面后,复用第一页的抓取逻辑,获取第二页的排名、球员、俱乐部和扑救数数据。

3. 合并两页数据

将两页数据合并为一个完整的数据框。

完整代码示例:

# 假设已完成RSelenium驱动初始化(如remDr <- remoteDriver(...))

# 导航到目标页面
remDr$navigate("https://www.premierleague.com/stats/top/players/saves")

# 抓取第一页数据
epl_page1 <- read_html(remDr$getPageSource()[[1]])
rank_page1 <- epl_page1 %>% html_nodes(".statsTableContainer .rank") %>% html_text()
player_page1 <- epl_page1 %>% html_nodes(".playerName ") %>% html_text()
club_page1 <- epl_page1 %>% html_nodes(".statNameSecondary") %>% html_text() 
stat_page1 <- epl_page1 %>% html_nodes(".statsTableContainer .text-centre") %>% html_text()
saves_page1 <- data.frame(rank = rank_page1, player = player_page1, club = club_page1, stat = stat_page1)

# 等待下一页按钮加载,执行点击
Sys.sleep(2) # 可根据网络情况调整等待时间
next_btn <- remDr$findElement(using = "css selector", value = ".paginationBtn.paginationNext")
next_btn$clickElement()

# 等待第二页加载完成
Sys.sleep(3)

# 抓取第二页数据
epl_page2 <- read_html(remDr$getPageSource()[[1]])
rank_page2 <- epl_page2 %>% html_nodes(".statsTableContainer .rank") %>% html_text()
player_page2 <- epl_page2 %>% html_nodes(".playerName ") %>% html_text()
club_page2 <- epl_page2 %>% html_nodes(".statNameSecondary") %>% html_text() 
stat_page2 <- epl_page2 %>% html_nodes(".statsTableContainer .text-centre") %>% html_text()
saves_page2 <- data.frame(rank = rank_page2, player = player_page2, club = club_page2, stat = stat_page2)

# 合并两页数据
saves_full <- rbind(saves_page1, saves_page2)

# 关闭驱动
remDr$close()

注意事项

  • 若CSS选择器定位下一页按钮失败,可尝试用Xpath定位://button[contains(@class, 'paginationNext')]
  • 替代Sys.sleep的更稳定方式是使用waitForElement方法,确保元素加载完成:
    remDr$waitForElement(using = "css selector", value = ".paginationBtn.paginationNext", timeout = 10000)
    
  • 抓取后可对文本做清洗(如去除多余空格、换行符),保证数据整洁。

内容的提问来源于stack exchange,提问作者Tony H

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 21:25:24