Как соскрести текст с веб-страницы, которая требует взаимодействия в т - PullRequest
0 голосов
/ 10 мая 2018

Я пытаюсь почистить отзывы на веб-странице, чтобы определить частоту слов. Тем не менее, только частичные обзоры дается, когда обзор дольше. Вы должны нажать на «Еще», чтобы получить веб-страницу, чтобы показать полный обзор. Вот код, который я использую для извлечения текста обзора. Как я могу «нажать» на больше, чтобы получить полный обзор?

library(rvest)

tripAdvisorURL <- "https://www.tripadvisor.com/Hotel_Review-g33657-d85704- 
Reviews-Hotel_Bristol-Steamboat_Springs_Colorado.html#REVIEWS"

webpage <-read_html(tripAdvisorURL)

reviewData <- xml_nodes(webpage,xpath = '//*[contains(concat( " ", @class, " 
" ), concat( " ", "partial_entry", " " ))]')

head(reviewData)

xml_text(reviewData[[1]])

[1] "The rooms were clean and we slept so good we had room 10 and 12 we 
didn’t use 12 but it joins 10 .kind of strange but loved the hotel ..me 
personally I would take the hot tub out it was kinda old..the lady 
that...More"

1 Ответ

0 голосов
/ 10 мая 2018

Как уже упоминалось в комментарии, вы можете использовать Rselenium вместе с rvest для большей интерактивности:

library(RSelenium)

rmDr <- rsDriver(browser = "chrome")

myclient <- rmDr$client
tripAdvisorURL <- "https://www.tripadvisor.com/Hotel_Review-g33657-d85704-Reviews-Hotel_Bristol-Steamboat_Springs_Colorado.html#REVIEWS"
myclient$navigate(tripAdvisorURL)
#select all "more" button, and loop to click them
webEles <- myclient$findElements(using = "css",value = ".ulBlueLinks")
for (webEle in webEles) {
    webEle$clickElement()
}

mypagesource <- myclient$getPageSource()

read_html(mypagesource[[1]]) %>%
    html_nodes(".partial_entry") %>%
    html_text()
...