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

rvest调用follow_link跳转分页始终返回同一页面问题求助

故障原因
  • 包引用错误:代码中加载包时写的htTR大小写错误,正确应为httr,未正确加载依赖包会导致会话管理异常。
  • 会话状态缺失:你直接通过jump_to跳转到第二页搜索地址,没有模拟正常用户先执行搜索操作的流程,站点后台未给当前会话绑定对应的搜索上下文参数,访问后续分页时会被强制重定向回搜索结果首页。
  • 分页链接识别失效:部分站点的分页地址不会直接写在静态HTML的a标签属性中,而是通过JS动态生成跳转逻辑,rvest本身不支持执行JS代码,follow_link只能读取静态写死的href属性,拿到的可能是无效链接或者第一页地址。
  • CSS选择器匹配错误:你使用的".number-pages-container span:nth-child(2) a"选择器可能匹配到了非目标元素,比如第一页的页码标签,导致跳转回第一页。
  • 反爬策略限制:站点检测到非浏览器请求时,会主动重定向分页请求到第一页,需要补充更多请求头参数比如referer、cookie等模拟正常用户行为。
修复方案
  1. 先修正依赖包加载的大小写错误,确保httr正常加载。
  2. 先模拟正常搜索流程,而非直接跳转到分页地址,让会话拿到完整的搜索上下文:
library(tidyverse)
library(rvest)         
library(httr)

base_url = "https://www.milenio.com"
UserAgent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36"
MySession = html_session(
  url = base_url,
  user_agent(UserAgent)
)

# 先进入搜索页提交搜索参数,而非直接跳分页
search_page <- MySession %>% 
  jump_to("buscador") %>% 
  html_form() %>% 
  # 匹配搜索表单填入关键词
  .[[1]] %>% 
  set_values(text = "violencia") %>% 
  submit_form(MySession, .)

# 验证第一页内容后再翻页
print(search_page$url)
  1. 翻页前先校验匹配到的分页链接是否正确:
# 先打印你选中的分页链接地址,确认是否为第二页地址
target_link <- search_page %>% 
  html_element(".number-pages-container span:nth-child(2) a") %>% 
  html_attr("href")
print(target_link)

如果打印出的链接不是预期的第二页地址,说明站点分页是JS动态渲染,你可以直接构造分页地址批量请求,格式为https://www.milenio.com/buscador/page/[页码]?text=violencia,直接通过jump_to按页码循环请求即可,不需要调用follow_link。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 11:45:03