Ошибка при использовании jump_to и follow_link в rvest - PullRequest
0 голосов
/ 27 августа 2018

Вот мой текущий код:

url <- 'https://uws-community.symplicity.com/index.php?s=student_group'
page <- html_session(url)

get_more_info <- function(more_info, page) {
  fb <- html_node(jump_to(page, more_info), xpath = '//*[@id="dnf_class_values_student_group__facebook__widget"]') %>% html_text()
}

get_table <- function(page, count) {
  #find group names
  name_text <- html_nodes(page,".grpl-name a") %>% html_text()
  df <- data.frame(name_text, stringsAsFactors = FALSE)

  #find text description
  desc_text <- html_nodes(page, ".grpl-purpose") %>% html_text()
  df$desc_text <- trimws(desc_text)

  #find emails
  #  find the parent nodes with html_nodes
  #  then find the contact information from each parent using html_node
  email_nodes<-html_nodes(page, "div.grpl-grp") %>% html_node( ".grpl-contact a") %>% html_text()
  df$emails<-email_nodes

  category_nodes <- html_nodes(page, "div.grpl-grp") %>% html_node(".grpl-type") %>% html_text()
  df$category<-category_nodes

  pic_nodes <-html_nodes(page, "div.grpl-grp") %>% html_node( ".grpl-logo img") %>% html_attr("src")
  df$logo <- paste0("https://uws-community.symplicity.com/", pic_nodes)

  more_info_nodes <- html_nodes(page, ".grpl-moreinfo a") %>% html_attr("href")
  df$more_info <- more_info_nodes

  df$fb <- lapply(df$more_info, get_more_info, page)

  if(count != 44) {
    return (rbind(df, get_table(page %>% follow_link(css = ".paging_nav a:last-child"), count + 1)))
  } else{
    return (df)
  }
}


RSO_data <- get_table(page, 0)

Так что это прекрасно работает, если я удаляю

df$fb <- lapply(df$more_info, get_more_info, page)

, но мне нужна информация, которую мне дает эта строка. Я получаю сообщение об ошибке:

 Error in `$<-.data.frame`(`*tmp*`, "logo", value = "https://uws-community.symplicity.com/") : 
  replacement has 1 row, data has 0 

Не имеет смысла, почему ошибка будет с линией сглаживания логотипа, когда часть, которую я добавляю, имеет отношение к функции get_more_info, которая использует функцию jump_to.

Что я здесь не так делаю? Я знаю, что это связано с функцией get_more_info, но я не знаю, что мне нужно исправить.

...