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

R语言map循环中加入purrr::slowly或Sys.sleep设置请求间隔的方法

实现方案

方案1:在map迭代逻辑中插入休眠判断

总共7次请求仅需要在非首次请求前休眠10秒即可,无需修改其余业务逻辑,直接替换你原有map部分的代码即可:

# 替换原有map代码块
map(., function(url, index) {
  # 除第一次请求外,其余请求执行前先休眠10秒
  if (index != 1) {
    Sys.sleep(10)
  }
  # 原有爬取逻辑,已修复原代码中bind_rows后缺失的管道符语法问题
  read_html(url) %>% 
    html_table() %>% 
    .[[1]] %>%   # 取第一个表格
    dplyr::bind_rows() %>%
    janitor::clean_names() %>% 
    slice(-1) %>% 
    select(-21) %>% 
    rename(nome=1,nacionalidade=2,posicao=3,idade=4,jogos=5,inicios=6,minutos=7,minutos_90=8,gol=9,assistencia=10,
           gol_normal=11,gol_penalti=12,penalti_batido=13,amarelo=14,vermelho=15,gol_90=16,assistencia_90=17,
           gol_assistencia_90=18,gol_normal_90=19,gol_assistencia_penalti_90=20) %>% 
    as.data.frame() %>% 
    format(scientific=FALSE) %>% 
    mutate_at(.,c(5:15),as.numeric) %>% 
    mutate(nacionalidade = str_extract(nacionalidade, "[A-Z]+"))
}, seq_along(.))

方案2:用purrr::slowly实现更简洁的间隔控制

slowly是purrr专门为函数添加执行间隔的工具,不需要手动判断迭代位置,直接封装爬取逻辑即可:

# 先封装单页爬取函数,用slowly装饰指定间隔
scrape_fbref <- slowly(
  function(url) {
    read_html(url) %>% 
      html_table() %>% 
      .[[1]] %>% 
      dplyr::bind_rows() %>% 
      janitor::clean_names() %>% 
      slice(-1) %>% 
      select(-21) %>% 
      rename(nome=1,nacionalidade=2,posicao=3,idade=4,jogos=5,inicios=6,minutos=7,minutos_90=8,gol=9,assistencia=10,
             gol_normal=11,gol_penalti=12,penalti_batido=13,amarelo=14,vermelho=15,gol_90=16,assistencia_90=17,
             gol_assistencia_90=18,gol_normal_90=19,gol_assistencia_penalti_90=20) %>% 
      as.data.frame() %>% 
      format(scientific=FALSE) %>% 
      mutate_at(.,c(5:15),as.numeric) %>% 
      mutate(nacionalidade = str_extract(nacionalidade, "[A-Z]+"))
  },
  rate = rate_delay(pause = 10) # 指定两次执行间隔为10秒
)

# 原有map部分直接调用封装好的函数即可
map(., scrape_fbref)

可选优化

如果仍偶发超时,可搭配purrr::safely或者httr::RETRY给请求增加重试逻辑,避免单次网络波动导致整个任务中断。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 13:54:00