CoderCastrov logo
CoderCastrov
Анализ текста

Парсинг TripAdvisor (Отель, Отзывы и Рейтинг) с использованием R

Парсинг TripAdvisor (Отель, Отзывы и Рейтинг) с использованием R
просмотров
5 мин чтение
#Анализ текста

Ассаламу алейкум ва рахматуллахи ва баракатух...

В связи с пандемией коронавируса, которая началась в начале 2020 года, владельцы туристических объектов жалуются на снижение посетителей. Однако сейчас ситуация с пандемией COVID-19 постепенно улучшается. Поэтому, прежде чем произойдет всплеск или появление обратного туризма, необходимо улучшить как условия, так и инфраструктуру в местах размещения. Для того чтобы узнать, какие отели или места размещения используются, можно воспользоваться веб-сайтом TripAdvisor.

Парсинг веб-сайта - это процесс автоматического и специфического сбора данных и информации, доступных на веб-сайте. Он является специфическим, потому что извлекаемые данные ограничены определенной частью, соответствующей потребностям. Обычно веб-страницы, которые можно спарсить, созданы на языке разметки XHTML или HTML. Для выполнения парсинга веб-страниц можно использовать язык программирования Python, но также существуют дополнения для Google Chrome, которые можно установить для парсинга.


Сначала мы собираем 30 данных об отелях или местах размещения в районе Аньер. Из этих 30 названий отелей мы извлекаем информацию, связанную с каждым отелем или местом размещения, такую как рейтинг и отзывы.

Сначала установите пакеты "rvest" и "xml2" и активируйте их с помощью библиотеки.

install.packages("xml2")
install.packages("rvest")
library(xml2)
library(rvest)

Затем введите ссылку на веб-страницу TripAdvisor, которую вы хотите спарсить, используя ссылку https://www.tripadvisor.co.id/Hotels-g3400871-Anyer_Banten_Province_Java-Hotels.html.

адрес_веб-сайта <- 'https://www.tripadvisor.co.id/Hotels-g3400871-Anyer_Banten_Province_Java-Hotels.html'
веб-страница <- read_html(адрес_веб-сайта)
веб-страница

Тогда вы получите следующий результат.

Парсинг Названий Отелей

Затем производится парсинг для получения названий отелей в районе Аньер. Чтобы узнать, где находится название отеля на html-странице, необходимо использовать расширение "SelectorGadget", которое можно установить и использовать в Chrome, по ссылке здесь.

После установки расширения "SelectorGadget", щелкните по иконке, чтобы появилось маленькое окно, в котором будет указано местоположение выбранной части.

Затем введите следующую команду в R.

nama_hotel <- html_nodes(lamanweb,'.prominent')
data_nama_hotel <- html_text(nama_hotel)
data_nama_hotel

Результат будет выглядеть следующим образом

После успешного получения данных о названиях отелей, следующим шагом является очистка данных и преобразование их в фактор.

# удаление пробелов в начале названия отеля
data_nama_hotel <- gsub("      ", "", data_nama_hotel)
# преобразование текстовых данных в фактор
data_nama_hotel<-as.factor(data_nama_hotel)head(data_nama_hotel)

Результат будет выглядеть следующим образом

Парсинг данных о количестве отзывов о гостинице

Затем мы выполняем парсинг количества отзывов, чтобы узнать, сколько посетителей оставили комментарии о гостинице, будь то положительные или отрицательные. Для получения количества отзывов также необходимо использовать "SelectorGadget".

Затем введите следующую команду в R.

# Получение данных об отзывах
отзывы_гостиницы <- html_nodes(веб-страница,'.review_count')
отзывы_гостиницы <- html_text(отзывы_гостиницы)
отзывы_гостиницы

Затем очистите данные от символов и слов, которые не предоставляют дополнительной информации. А также преобразуйте их в числовой формат.

# Очистка данных о количестве отзывов о гостинице
отзывы_гостиницы <- gsub(" отзывы", "", отзывы_гостиницы)
отзывы_гостиницы <- gsub("\\.", "", отзывы_гостиницы)
# Преобразование данных отзывы_гостиницы в числовой формат
отзывы_гостиницы <- as.numeric(отзывы_гостиницы)отзывы_гостиницы

Таким образом, мы получаем следующий результат.

Парсинг Рейтинга Отелей

Для получения данных о рейтинге отелей необходимо использовать SelectorGadget, как и в предыдущем случае. Однако, требуется дополнительное извлечение атрибута и удаление первого элемента, так как он не содержит рейтинга.

Затем введите следующую команду в R:

rating_hotel <- html_nodes(lamanweb,'.ui_bubble_rating')%>%         html_attr("alt")# Удаление первого элемента, так как он не содержит рейтинга
rating_hotel <- rating_hotel[-c(1)]rating_hotel

Таким образом, получим следующий результат.

Поскольку в данных все еще есть ненужная информация, необходимо выполнить очистку данных. Здесь мы возьмем только значение рейтинга, заменим запятую на точку и преобразуем его в числовой тип.

# Очистка данных о рейтинге отелей
rating_hotel <- gsub(",", ".", rating_hotel)
rating_hotel <- strsplit(rating_hotel, " ")# Преобразование данных о рейтинге отелей в числовой тип
rating_hotel <- as.numeric(lapply(rating_hotel, `[[`, 1))rating_hotel

После этого мы получим данные о рейтинге следующего вида.

При проверке с помощью команды length(rating_hotel) мы видим, что имеется только 26 данных. Это означает, что есть 4 пропущенных значения или данные, которые не указаны на веб-сайте TripAdvisor. Это происходит в следующих двух отелях.

Для этого пропущенные значения вручную заменяются на "NA".

# Замена пропущенных данных на значение NA
for (i in c(22, 23, 24, 25)){a<-rating_hotel[1:(i-1)]
b<-rating_hotel[i:length(rating_hotel)]
rating_hotel<-append(a,list("NA"))
rating_hotel<-append(rating_hotel,b)}length(rating_hotel)
summary(rating_hotel)

Тогда получим следующую сводку.

При вызове переменной rating_hotel она будет выглядеть следующим образом.

Создание Data Frame

После того, как все необходимые данные были успешно спарсены и прошли предварительную обработку, эти данные объединяются в data frame с использованием следующей команды.

# Создание data frame
data_hotel_anyer <- data.frame(Nama_Hotel = data_nama_hotel, Rating = rating_hotel, Ulasan = ulasan_hotel)

Создание визуализации

Затем создается визуализация полученных данных с использованием пакета "ggplot2". Первый график показывает количество отелей в зависимости от рейтинга. Для его создания используется следующая команда.

library('ggplot2')
qplot(data = data_hotel_anyer, Rating, fill = Nama_Hotel, bins = 10)

Визуализация будет выглядеть следующим образом.

Затем создается вторая визуализация, которая показывает название отеля, рейтинг и количество отзывов.

ggplot(data_hotel_anyer, aes(x = Rating, y = Nama_Hotel)) +
geom_point(aes(colour = Ulasan), size = 5)

Исходя из результатов визуализации количества отелей в зависимости от рейтинга, можно сказать, что отели или гостиницы в районе Anyer имеют самый низкий рейтинг 3, а средний рейтинг отелей или гостиниц составляет 4. Это означает, что существует несколько факторов, влияющих на посетителей отелей или гостиниц в их оценке.

References:

https://www.cahoover.com/blog/marketing-analytics/scraping-tripadvisor-reviews-using-r/

https://www.dqlab.id/kenali-web-scraping-salah-satu-teknik-pengumpulan-data-sekunder


Переведи введенный markdown код с английского на русский. Сохрани оригинальную разметку markdown и изображения на своих местах. Вместо слов скрэпинг/скрапинг/скрапер/скрэпер используй парсинг/парсер/парсить. Возвращай только markdown код, без дополнительного текста