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

R语言用for循环批量爬取URL列表仅返回最后一页如何解决?

问题根因

你的代码中PoliticalArticles变量在每次for循环中都会被重新赋值为当前单页的爬取结果,上一轮循环的结果会被直接覆盖,因此循环结束后仅保留最后一页的数据。

修正后可实现批量爬取的代码
library(rvest)
library(dplyr)

GitHubpoliticsconversions <- "https://raw.githubusercontent.com/lukanius007/web_scraping_politics/main/politics_conversions.csv"

CSVFile <- read.csv(GitHubpoliticsconversions, header = TRUE, sep = ",")

# 提取所有URL
StoryLink <- pull(CSVFile, 4)

# 初始化结果列表,长度和URL数量一致,提前分配空间提升运行效率
PoliticalArticles <- vector("list", length = length(StoryLink))

# 遍历所有URL爬取
for(i in seq_along(StoryLink)){
  # 单次请求间隔1秒,避免触发网站反爬规则
  Sys.sleep(1)
  # 读取当前页
  ArticlePage <- read_html(StoryLink[i]) 
  # 提取目标文本
  articleText <- ArticlePage %>% html_elements(".lead , .article__title") %>% html_text()
  # 将当前页结果存入对应位置,不覆盖之前的内容
  PoliticalArticles[[i]] <- articleText
}

# 可选:如果需要把所有结果合并为一个字符向量,执行下面的代码
# PoliticalArticles_all <- unlist(PoliticalArticles)

# 可选:如果需要整理为带文章序号的数据框,执行下面的代码
# PoliticalArticles_df <- data.frame(
#   文章序号 = rep(1:length(PoliticalArticles), times = sapply(PoliticalArticles, length)),
#   内容 = unlist(PoliticalArticles)
# )

如果运行时出现请求报错,可以适当调大Sys.sleep()的秒数,降低请求频率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 21:06:04