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

如何用R批量抓取1至50号序列URL中的表格?

批量抓取多URL表格的实现方法

核心思路

先生成1到50的完整URL列表,再用批量处理工具循环抓取每个页面的目标表格,最后合并成一个统一的数据框。用R的purrr包处理这类批量任务比传统for循环更高效简洁,还能自动完成数据合并。

完整实现代码

library(tidyverse)
library(rvest)

# 1. 生成目标URL列表
base_url <- "https://uboat.net/allies/commanders/"
urls <- paste0(base_url, 1:50, ".html")

# 2. 定义单个URL的抓取函数(包含异常处理)
scrape_table <- function(url) {
  # 捕获加载失败或无表格的情况,避免中断整个批量流程
  tryCatch({
    read_html(url) %>%
      html_element('table.table_subtle') %>%
      html_table() %>%
      # 可选:添加来源URL列,方便后续数据溯源
      mutate(source_url = url)
  }, error = function(e) {
    # 出错时返回空数据框,保证批量任务继续执行
    message(paste("抓取失败:", url, "错误信息:", e$message))
    tibble()
  })
}

# 3. 批量抓取并合并所有表格
all_tables <- map_dfr(urls, scrape_table)

# 查看合并后的结果
head(all_tables)

关键说明

  • map_dfr会自动把每个页面返回的表格按行合并成一个大的数据框,省去手动拼接的繁琐操作
  • tryCatch用来处理单个页面的异常(比如页面不存在、网络波动),不会因为某一个页面出错导致整个批量任务终止
  • 可选的source_url列可以帮你定位单条数据的来源页面,方便后续校验和排查问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 11:54:14