Я пытаюсь очистить рейтинги от 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, поэтому извиняюсь, если ответ очевиден.