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

使用RSelenium在R中爬取Reddit时评论重复捕获问题

解决Reddit评论重复爬取的问题

你的问题出在评论内容的定位XPath上,当前的.//div[3]/div/p没有精准限制在单条shreddit-comment元素范围内,导致每次循环都会匹配到页面上所有评论的p标签,所以31条评论每条都被重复提取31次。

修正方案

使用带data-testid属性的精准XPath定位评论内容容器,确保只获取当前循环的这条评论的文本:

将原代码中这一行:

p_tags <- each_comment$findElements(using = "xpath", value = ".//div[3]/div/p")

替换为:

# 精准定位当前评论的内容容器,获取其中所有p标签
p_tags <- each_comment$findElements(using = "xpath", value = ".//div[@data-testid='comment-content']//p")

如果希望直接获取整条评论的合并文本(无需拆分p标签),可以简化为:

comment_text <- each_comment$findElement(using = "xpath", value = ".//div[@data-testid='comment-content']")$getElementText()
print(comment_text)

修正后的完整代码片段

#comments
comment_list <- remDr$findElements(using = 'tag name', 'shreddit-comment')

for (each_comment in comment_list) {
  author <- each_comment$getElementAttribute('author')
  print(paste("Author ---", author))
  
  # 精准获取当前评论的所有文本段落
  p_tags <- each_comment$findElements(using = "xpath", value = ".//div[@data-testid='comment-content']//p")
  
  for (p_tag in p_tags) {
    print(p_tag$getElementText())
  }
}

补充说明

Reddit的DOM结构会偶尔调整,data-testid是官方用于测试的属性,比依赖div索引(如div[3])更稳定,能避免因页面结构微调导致的定位失效。另外,在点击"加载更多评论"后,建议增加Sys.sleep(3)等待评论加载完成,避免因DOM未更新导致的元素缺失问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 20:38:29