Более эффективный способ очистки значений рейтинга от TripAdvisor, используя R - PullRequest
0 голосов
/ 03 мая 2018

Я пытаюсь очистить рейтинги от TripAdvisor. До сих пор мне удалось извлечь узлы HTML, превратить их в символьные строки, извлечь строку, представляющую нужное мне число, затем преобразовать ее в правильное число, наконец разделив его на 10, чтобы получить правильное значение, которое он демонстрирует.

library(rvest)

url <- "https://www.tripadvisor.co.uk/Attraction_Review-g1466790-d547811-Reviews-Royal_Botanic_Gardens_Kew-Kew_Richmond_upon_Thames_Greater_London_England.html"

ratings_too_big <- url %>%
  read_html() %>%
  html_nodes("#REVIEWS .ui_bubble_rating") %>%
  as.character() %>%
  substr(38,39) %>%
  as.numeric() 

ratings_too_big/10

Это, без сомнения, очень грязно - какой более чистый и эффективный способ сделать это? Я также попробовал пример Хэдли Уикхема, показанный здесь :

library(rvest)

url <- "http://www.tripadvisor.com/Hotel_Review-g37209-d1762915-Reviews-JW_Marriott_Indianapolis-Indianapolis_Indiana.html"

reviews <- url %>%
  read_html() %>%
  html_nodes("#REVIEWS .innerBubble")

    rating <- reviews %>%
  html_node(".rating .rating_s_fill") %>%
  html_attr("alt") %>%
  gsub(" of 5 stars", "", .) %>%
  as.integer()

Это не удалось, так как данные не были возвращены (в HTML-узле ".rating .rating_s_fill" нет ничего). Я - новые идентификаторы соскоба и css, поэтому извиняюсь, если ответ очевиден.

...