网页抓取时缺少课程 - 在制作数据时遇到困难。框架

时间:2018-06-08 06:15:37

标签: r dataframe web-scraping web-crawler

我正在研究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 :(得分:0)

在报废前使用一个条件。

使用标题html节点之后的条件。如果在标题节点下可用的价格节点然后废弃并放入一个列表,然后将其附加到数据框中。

您也可以使用xpath。如果使用xpath,将更容易检查条件。