enter image description herei正在编写代码,以便从一个项目的reddit帖子中抓取帖子标题、 comments 和作者姓名. 我可以在网上抓取帖子的标题,作者的名字,但 comments 没有被正确提取.

如果帖子上有31条 comments ,则每条 comments 将被提取31次.下面的代码可供参考:

# load packages
library(RSelenium)
library(netstat)

# start the server
rs_driver_object <- rsDriver(browser = 'firefox',verbose = FALSE, port = free_port(), chromever = NULL)

# create a client object
remDr <- rs_driver_object$client

# open a browser
remDr$open()
# maximize window
remDr$maxWindowSize()

remDr$navigate("https://www.reddit.com/r/AnimeReviews/comments/essf1u/assassination_classroom_is_a_1010_the_charm_the/")

Sys.sleep(2)

# scroll to the end of the webpage
remDr$executeScript("window.scrollTo(0, document.body.scrollHeight);")
Sys.sleep(2)
remDr$executeScript("window.scrollTo(0, document.body.scrollHeight);")

load_more_comments <- remDr$findElement(using = 'xpath', '//*[@id="comment-tree"]/faceplate-partial/div[1]/button')
load_more_comments$clickElement()
#load_more_comments$refresh()

#pickup title
title <- remDr$findElement(using = 'xpath', '//*[@id="main-content"]/shreddit-title')$getElementAttribute('title')

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

for (each_comment in comment_list) {
  print(paste("Author --->", each_comment$getElementAttribute('author')))
  
  p_tags <- each_comment$findElements(using = "xpath", value = ".//div[3]/div/p")

  # Extract and print the text from each <p> tag
  for (p_tag in p_tags) {
    print(p_tag$getElementText())
  }

}

请参阅下面的屏幕截图:

我不知道为什么它不能只工作一次. 似乎有一些问题是关于如何

P_tag&lt;-each_Comment$findElements(Using="XPath",Value=".//div[3]/div/p") 正在起作用

参考上面的代码,我使用RSelum在R中try 了Web抓取.我试图删掉Reddit的 comments ,但它们出现了多次,而不是一次.

推荐答案

findElements搜索整个HTML,你需要使用findChildElements.这应该会起作用(替换最后一个循环):

lapply(comment_list, \(c) {
  author <- unlist(c$getElementAttribute('author'))
  comment <- unlist(lapply(c$findChildElements(using = "xpath", value = ".//div[3]/div/p"), \(p) {
    p$getElementText()
  }))
  
  list(author = author, comment = comment)
})

#> [[1]]$author
#> [1] "dotti1999"
#> 
#> [[1]]$comment
#> [1] "this shit was fucking insane"                                                                  
#> [2] "honestly I adored this anime when I first watched it..."
#> ...
#> [[3]]$author
#> [1] "[deleted]"
#> 
#> [[3]]$comment
#> [1] "Give me a be If premise and I will give it a watch"
#>  ...

请注意,这似乎仍不能让你获得replies条 comments .

R相关问答推荐

查找具有平局的多个列的最大值并返回列名或平局 destruct 者NA值

如何求解arg必须为NULL或deSolve包的ode函数中的字符向量错误

如何编辑ggplot的图例字使用自定义对象(gtable)?'

如何写一个R函数来旋转最后n分钟?

单个轮廓重叠条的单独图例

从BRM预测价值

移除仪表板Quarto中顶盖和车身之间的白色区域

Ggplot2中geom_tile的动态zoom

按多列统计频次

R中有约束的优化问题:如何用复数和对数效益函数解决问题?

使用RSelenium在R中抓取Reddit时捕获多个标签

R如何计算现有行的总和以添加新的数据行

R -使用矩阵reshape 列表

多元正态分布的计算

排序R矩阵的行和列

隐藏基于 case 总数的值

使用dqur在不同变量上创建具有多个条件的变量

将CSV转换为R中的自定义JSON格式

如何计算多个变量的百分比与总和的百分比?

在子图内和子图之间对齐行数不均匀的表格罗布对