嵌套的 For 循环无法存储来自先前迭代的数据

问题描述

我实际上是网络抓取的新手,昨晚刚刚了解它。

简介:

我正在尝试在登录我的帐户时抓取 Science Direct 网页。

我试图在每次迭代中存储所有标题(有三页,即三个迭代),对于每次迭代,我必须爬行我做了另一个 for 循环来读取每个标题的 25 个唯一 ID在每次迭代中。

然而,它只存储了最后一次迭代(第三页)的标题。

当我只抓取一个页面时,我知道代码正在工作,但是当我尝试使用第一个 for 循环抓取“下一个”页面时:

'''
for (i in seq (from = 0,to = 50,by = 25)) {

'''

正如我之前所说,代码只存储最后一次迭代(即包含 25 篇文章的第 3 页)。

顺便说一下,每个页面都包含一个选项,可以显示每页 25、50 或 100 篇文章,我选择了 25,因此序列 = 25。

代码如下:

#install.packages("xml2") # required for rvest
library("rvest") # for web scraping
library("dplyr") # for data management

titleNo = c()
name = list()
for(i in seq(from = 0,by = 25)) {
  link = paste0("https://www.sciencedirect.com/search?qs=PISA%2C%20Programme%20for%20International%20Student%20Assessment&date=2010-2021&articleTypes=FLA&lastSelectedFacet=subjectAreas&subjectAreas=3300%2C3200%2C2800%2C2000%2C1200%2C1700%2C1400%2C1800%2C2200&offset=",i,"")
  for(j in 1:26) {
    page = read_html(link)
    titleNo[j] = (paste0(".push-m:nth-child(",j,") h2"))
    name[j] <- list(page %>% html_nodes(titleNo[j])%>% html_text())
  }
  print(paste(i))
}

name <- data.frame(unlist(name))

你们能指出我做错了什么吗?

代码成功地运行了所有页面,但我的问题是,对于每次迭代,代码都会清除 name 变量并将新的变量存储到最后一次迭代。

我认为我的问题在于我的 for 循环。我不确定我是否在做正确的事情。

谢谢

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)