Я хотел бы удалить из Интернета ссылки, вложенные в имя свойства, этот скрипт работает, однако не извлекает только URL-адреса NA
s. Не могли бы вы мне помочь или то, что мне не хватает в сценарии, вырезано.
Спасибо
# Test
library(rvest)
library(dplyr)
link <- "https://www.sreality.cz/hledani/prodej/byty/brno?_escaped_fragment_="
page <- read_html(link)
price <- page %>%
html_elements(".norm-price.ng-binding") %>%
html_text()
name <- page %>%
html_elements(".name.ng-binding") %>%
html_text()
location <- page %>%
html_elements(".locality.ng-binding") %>%
html_text()
href <- page %>%
html_nodes(".name.ng-binding") %>%
html_attr("href") %>% paste("https://www.sreality.cz", ., sep="")
flat <- data.frame(price, name, location, href, stringsAsFactors = FALSE)
Ваш селектор CSS выбрал встроенный html якоря вместо якоря. Это должно работать:
page %>%
html_nodes("a.title") %>%
html_attr("ng-href") %>%
paste0("https://www.sreality.cz", .)
paste0(...)
является сокращением от paste(..., sep = '')
как вы уже догадались :-) Я использовал средство выбора элементов (Ctrl-Shift-C в Chrome), чтобы выбрать ссылку и отобразить ее html-окружение в инспекторе документов. Оттуда я выбрал тип элемента («a» для привязки = ссылка), класс («заголовок») и атрибут («ng-href») в качестве быстрого и грязного селектора. Если бы это было слишком общим, я бы сделал селектор более конкретным, как предложил @NadPat, или отфильтровал результаты, например. для «detail/prodej» в URL-адресе.
Другой способ использования пути JS
page %>%
html_nodes('#page-layout > div.content-cover > div.content-inner > div.transcluded-content.ng-scope > div > div > div.content > div > div:nth-child(4) > div > div:nth-child(n)') %>%
html_nodes('a') %>% html_attr('href') %>% str_subset('detail') %>% unique() %>% paste("https://www.sreality.cz", ., sep="")
[1] "https://www.sreality.cz/detail/prodej/byt/4+1/brno-zabrdovice-tkalcovska/1857071452"
[2] "https://www.sreality.cz/detail/prodej/byt/3+kk/brno--/1336764508"
[3] "https://www.sreality.cz/detail/prodej/byt/2+kk/brno-stary-liskovec-u-posty/3639359836"
[4] "https://www.sreality.cz/detail/prodej/byt/2+1/brno-reckovice-druzstevni/3845994844"
[5] "https://www.sreality.cz/detail/prodej/byt/2+1/brno-styrice-jilova/1102981468"
[6] "https://www.sreality.cz/detail/prodej/byt/1+kk/brno-dolni-herspice-/1961502812"
Вау, это работает, спасибо, как вы получили «a.title» и «ng-href», мне нужно искать через проверку веб-сайта?