2017-02-19 2 views
0

Я слом этой страницы:R: rvest: Как использовать ifelse для узлов?

https://www.linio.com.pe/c/tv-y-video/televisores

И я хочу, чтобы извлечь текущую цену телевизоров. Проблема в том, что некоторые цены находятся внутри <div>, а другие - меньше - внутри тега <span>.

Мне интересно, можно ли использовать конструкцию ifelse для получения всех текущих цен на телевизоры.

#Reads Linio's HTML 

linio <- read_html("https://www.linio.com.pe/c/tv-y-video/televisores", encoding = "ISO-8859-1") 


#Extracts prices inside the div tag 


linio %>% html_nodes("div.price-section div.price-secondary") %>% html_text() 


#Extracts prices inside the span tag 

linio %>% html_nodes("div.price-section span.price-secondary") %>% html_text() 

Я пытался это совместить цены от DIV и теги пролетных:

linio %>% ifelse(length(html_nodes("div.price-section div.price-secondary") %>% html_text())==0, html_nodes("div.price-section span.price-secondary") %>% html_text(), html_nodes("div.price-section div.price-secondary")) %>% html_text() 

без успеха ... почему вы не можете быть передний конец разработчики последовательны LiNiO в ...!

ответ

1

Есть несколько способов сделать что:

уронить div/span в целом с использованием:

linio %>% html_nodes("div.price-section .price-secondary") %>% html_text() 

Это выбирает все элементы с классом price-secondary внутри div.price-section.

Более конкретные
Только выберите div и span тегов внутри div.price-section вы можете использовать:

linio %>% 
    html_nodes("div.price-section div.price-secondary, div.price-section span.price-secondary") %>% 
    html_text 

Для полной ссылки селектора CSS см https://www.w3schools.com/cssref/css_selectors.asp

селектора минимального CSS
К найти минимальный селектор CSS ha ве взглянуть на http://selectorgadget.com/

В вашем случае это будет:

linio %>% html_nodes(".price-secondary") %>% html_text 

Это выбирает все элементы с классом price-secondary

испытания, что возвращают тот же результат

res1 <- linio %>% html_nodes("div.price-section .price-secondary") %>% html_text() 
res2 <- linio %>% 
    html_nodes("div.price-section div.price-secondary, div.price-section span.price-secondary") %>% 
    html_text 
res3 <- linio %>% html_nodes(".price-secondary") %>% html_text 
all(res1 == res2) # TRUE 
all(res2 == res3) # TRUE 
Смежные вопросы