Привет всем!
В течение достаточно долгого времени я пытался очистить данные и каким-то образом заменить отсутствующие html_nodes на NA или что-то еще. Тем не менее, я был неудачным.
Может кто-нибудь помочь мне разобраться, как это сделать? Или где посмотреть, чтобы понять, как это сделать?
Мой текущий код для очистки выглядит следующим образом:
library('rvest')
header_bind <- c()
page <- 0
price <- c()
ebay <- c()
runtime <- c()
pages <- 2
for (i in 1:pages) {
page <- page + 1
link <- paste("https://www.ebay.com/b/Cell-Phones-Smartphones/9355/bn_320094?LH_BIN=1&LH_ItemCondition=1000&rt=nc&_from=R40&_pgn=",page, sep="")
webpage <- read_html(link)
#read the name of the item
header <- html_nodes(webpage, ".s-item__title")
header_Text <- html_text(header)
header_bind <- rbind(header_bind,as.data.frame(header_Text))
#i get the price
prim_html <- html_nodes(webpage, ".s-item__price")
text_prim <- html_text(prim_html)
price <- rbind(price,as.data.frame(text_prim))
#i get the (amount sold this is missing sometimes)
runtime_html <- html_nodes(webpage, ".NEGATIVE")
text_runtime <- html_text(runtime_html)
runtime <- rbind(runtime,as.data.frame(text_runtime))
#prints 0 so i know that it went throught the for(){}
print(0)
}
Ps Я знаю, что это выглядит плохо, но я узнавая каждый день, как лучше кодировать.
Код выводит 48 аксов за цену и название продукта, однако, когда дело доходит до проданного или оставшегося количества, это дает мне 43.
Я попытался узнать, как это делают другие, взглянув на подобный стек переполнение сообщений, однако мне как-то не удалось поднять asp идею о них. У меня была идея, что я мог бы использовать эту функцию для элемента, который имеет отсутствующие узлы, но, похоже, он не работал:
text_runtime<- webpage %>%
html_nodes(".NEGATIVE") %>%
html_text() %>%
{if(length(.) == 0) NA else .}
Эта функция также дает мне 43 элемента и не помещает никаких NA, где отсутствует узел.