首页 > 解决方案 > 使用 R 从 TripAdvisor 刮取评分值的更有效方法

问题描述

我正在尝试从 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

这无疑是非常混乱的——有什么更清洁、更有效的方法来做到这一点?我还尝试了此处显示的 Hadley Wickham 示例:

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 标识符,如果答案很明显,我们深表歉意。

标签: htmlrweb-scrapingrvest

解决方案


推荐阅读