Как я могу собрать фрейм данных в R с webscraping, если некоторые данные отсутствуют? - PullRequest
0 голосов
/ 23 апреля 2019

Мой проект состоит в том, чтобы создать данные из интернет-магазина, занимающегося автомобилями, используя rvest в R. Я ищу каждый узел, сохраняю его в вектор, а затем в конце объединяю его в информационный кадр. Однако не в каждом вагоне заполнены все переменные, и кадр данных не создается, поскольку «аргументы подразумевают различное количество строк: 24, 25». Как мне решить это?

for (i in 2:2){
  cim <- paste("https://auto.jofogas.hu/magyarorszag/auto?o=", i, sep="")
  lap <- read_html(cim)

  brand <- html_nodes(lap, ".vehicle-brand") 
  brand <- html_text(brand)

  model <- html_nodes(lap, ".vehicle-model")
  model <- html_text(model)

  price <- html_nodes(lap, ".price")
  price <- html_text(price)
  price <- str_squish(price)
  price <- substr(price, 1, nchar(price)-3)
  price <- str_replace_all(price, " ", "")
  price <- as.numeric(price)
  price

  year <- html_nodes(lap, ".vehicle-reg-date")
  year <- html_text(year)
  #year <- as.Date(year)

  fuel <- html_nodes(lap, ".vehicle-fuel")
  fuel <- html_text(fuel)

  location <- html_nodes(lap, ".cityname")
  location <- html_text(location)

  autoJofogas <- data.frame(brand, model, price, year, fuel, location)
}

Поскольку страница обновляется с новыми продажами каждую минуту, результат не всегда воспроизводится, но как только кто-то загрузит продажу без определенной переменной, результатом будет:

Error in data.frame(brand, model, price, year, fuel, location) : 
  arguments imply differing number of rows: 24, 25
...