Выскабливание RSS-ссылки в R - PullRequest
0 голосов
/ 04 мая 2020

Я пытаюсь очистить некоторые теги в списке URL-адресов RSS. Я попытался использовать обычную структуру очистки с RSelenium (так как у меня есть список URL), где я нахожу html_nodes для вещей, которые меня интересуют: имя пользователя, обзор, заголовок, рейтинг ... Но я продолжаю получать эту ошибку "user_name: объект не найден" . Поэтому мне было интересно, стоит ли мне по-другому структурировать очистку, потому что это URL-адрес RSS? Я попытался посмотреть на связанные с R вопросы для этого, и именно здесь я придумал структуру, но она, похоже, сработала в связанном вопросе ... Вот мой код:


selenium_f= rsDriver(browser=c("firefox"))

#start a driver
driver = selenium_f$client

scrapped = list()

i <- 1
while(i <= 11){

  url <- corpus_df$reviews_rss_url[i]

  print( paste("Accessing to:", url) )

  driver$navigate(url)

  page_source <- driver$getPageSource()

  URL <- read_html(page_source[[1]])

  results <- URL %>% html_nodes("item")

  records <- vector("list", length = length(results))

  for (ii in (records)) {

    title <- xml_contents(results[ii] %>%  html_nodes("title"))[1] %>%
      html_text(trim = TRUE)

    user_name <- xml_contents(results[ii] %>% html_nodes("user_name"))[1] %>% 
      html_text(trim = TRUE)


    rating <- xml_contents(results[ii] %>% html_nodes("rss > channel > item:nth-child(11) > user_rating"))[1] %>% 
      html_text(trim = TRUE)

    review <- xml_contents(results[ii] %>% html_nodes("rss > channel > item:nth-child(11) > user_review"))[1] %>% 
      html_text(trim = TRUE)
}



  #remDr$close()

  scrapped[[i]] =  data.frame(name = user_corpus[i,'name'],
                             url = corpus_df[i,'review_rss_url'],
                             title = ifelse(length(title) > 0, title, NA),
                             username = ifelse(length(user_name) > 0, user_name, NA),
                             rating = ifelse(length(rating) > 0, rating, NA),
                             review = ifelse(length(review) > 0, review, NA))

  i = i + 1

}
...