将if语句合并到嵌套的For循环中

eh57zj3b  于 2023-03-15  发布在  其他
关注(0)|答案(1)|浏览(169)

我将非常感谢任何建议。我试图抓取一个论坛使用嵌套的for循环和if语句来捕捉所有的评论和回复。我有一种感觉,它的缩进,但不能弄清楚。我循环通过一个列表的网址,然后循环通过每个网址的页面,然后使用if语句来打破如果'下一页'按钮是失踪。任何建议将非常感激

df_comments <- tibble()

for (j in df_iva$url) {
  for (i in seq(from = 1, to = 100000, by = 1)){
    link = paste0(j, "/p", i)
    page = read_html(page)
    Sys.sleep(runif(1, min=1.29, max=4.89))
    
    post_title <- j %>% str_remove('https://forums.moneysavingexpert.com/discussion/') %>% str_remove('p*')
    user <- page %>% html_nodes(xpath = '//a[@class="Username js-userCard"]') %>% html_attr('data-userid')
    date_time <- page %>% html_nodes(xpath = '//div[@class="DataBox DataBox-Comments"]//div[@class="Meta RecordMeta"]//span[@class="MItem DateCreated"]//a//time') %>% html_attr('datetime') %>%  ymd_hms()
    
    df_comments = rbind(df_comments, tibble(post_title, user, date_time))
    
    if (page %>% html_nodes(xpath = '//div[@class="P PagerWrap"]//a[@class="Next"]') %>% html_attr('rel') == "next") {
      print(link)
    }
    else 
      {
        print("finished")
        break
      }
  }
  print(paste0("#####     ", j, "     ####"))
  Sys.sleep(runif(1, min=3.29, max=12.89))
}
tez616oj

tez616oj1#

如果没有可重现的错误,很难判断问题的确切位置,但是else语句应该与相关if语句的结束}出现在同一行上。

if (page %>% html_nodes(xpath = '//div[@class="P PagerWrap"]//a[@class="Next"]') %>% html_attr('rel') == "next") {
  print(link)
} else {
  print("finished")
  break
}

相关问题