отсутствует класс во время создания веб-страниц - возникают трудности при создании data.frame - PullRequest
0 голосов
/ 08 июня 2018

Я работаю над проектом на «zomato.com», который показывает нам рестораны по всему миру.Он показывает нам меню, репутацию, фотографии и многое другое.

Мы хотим просканировать всю информацию о «названии, рейтинге, адресе, кухне, цене» ресторанов Мельбурна.

мы можем уточнить эту информацию в 'https://www.zomato.com/melbourne/restaurants'

. Но у нас есть проблема при создании кадра данных путем интегрирования всех 5 переменных выше.Причина в том, что некоторые результаты переменной 'Price' не имеют значения (5 других переменных имеют 150 значений каждая, но цена имеет 144 значения).

Мы должны объединить число результатов каждой переменной, чтобы интегрировать их в информационный блок.Нам нужно сделать этот шаг, потому что мы собираемся проанализировать результаты сканирования с помощью Excel.Мы хотим дать значение NA для значений, которые не дают никакого результата (6 значений не указаны в ценах)

Не могли бы вы дать мне ответ, как я могу дать значения NA для создания всех переменных вдатафрейм

Вот наш код.

install.packages("rvest")
install.packages("dplyr")
install.packages("writexl")
install.packages("stringr")
install.packages("data.table")
install.packages("tidyr")



library("rvest")
library("dplyr")
library("writexl")
library("stringr")
library("data.table")
library("tidyr")



#url
url <- "https://www.zomato.com/melbourne/restaurants?page="
page <- c(1:941)
zomato_url <- c()


for (i in 1:941){
  zomato_url[i] <- paste0(url,page[i])
}


#variable tp collect
name <- c()
rating_vote <- c()
address <- c()
cuisine <- c()
price <- c()


for(i in 1:10){
  html <- read_html(zomato_url[i])
  name <- c(name, html_nodes(html, ".result-        
            title.hover_feedback.zred.bold.ln24.fontsize0")%>%
            html_text(trim=T))
  rating_vote <- c(rating_vote, html_nodes(html, ".ta-                
                   right.floating.search_result_rating.col-s-4.clearfix")%>%
                   html_text(trim=T))
  address <- c(address, html_nodes(html, ".col-m-16.search-result- 
               address.grey-text.nowrap.ln22")%>%
               html_text(trim=T))
  cuisine <- c(cuisine, html_nodes(html, ".col-s-11.col-m-12.nowrap.pl0")%>%
               html_text(trim=T))
  price <- c(price, html_nodes(html, ".res- 
             cost.clearfix")%>%html_nodes(".col-s-11.col-m-12.pl0")%>%
             html_text(trim=T))
  print(i)
}



#making data frame
outcome <- data.frame(name, rating_vote, address, cuisine, price)


#importing to excel
write_xlsx(outcome, path="C:/Users/helen.DESKTOP- 
          SG9LJPT/Desktop/outcome.xlsx")

1 Ответ

0 голосов
/ 08 июня 2018

Просто используйте одно условие перед списанием.

Используйте условие сразу после заголовка html узла.Если узел цены доступен под заголовком узла, то вырежьте и поместите в список, а затем добавьте его в фрейм данных.

Вы также можете использовать xpath, проще будет проверить условие, если вы используете xpath.

...