Получить узлы с веб-страницы html для сканирования URL с помощью R - PullRequest
0 голосов
/ 11 февраля 2020

https://i.stack.imgur.com/xeczg.png

Я пытаюсь получить URL-адреса под узлом '.2lines' на веб-странице 'https://www.sgcarmart.com/main/index.php'

library(rvest)
url <- read_html('https://www.sgcarmart.com/main/index.php') %>% html_nodes('.2lines') %>% html_attr()

Который я получаю сообщение об ошибке для функции html_nodes:

Error in parse_simple_selector(stream) : 
  Expected selector, got <NUMBER '.2' at 1>

Как мне обойти эту ошибку?

1 Ответ

0 голосов
/ 11 февраля 2020

Вы можете использовать селектор xpath, чтобы найти нужные вам узлы. Ссылки на самом деле содержатся в тегах <a> внутри тегов <p>, на которые вы пытаетесь сослаться по классам. Вы можете получить к ним доступ через один xpath:

library(rvest)

site <- 'https://www.sgcarmart.com'

urls <-  site                                           %>%
         paste0("/main/index.php")                      %>%
         read_html()                                    %>% 
         html_nodes(xpath = "//*[@class = '2lines']/a") %>% 
         html_attr("href")                              %>%
         {paste0(site, .)}

urls
#>  [1] "https://www.sgcarmart.com/new_cars/newcars_overview.php?CarCode=12485"
#>  [2] "https://www.sgcarmart.com/new_cars/newcars_overview.php?CarCode=11875"
#>  [3] "https://www.sgcarmart.com/new_cars/newcars_overview.php?CarCode=11531"
#>  [4] "https://www.sgcarmart.com/new_cars/newcars_overview.php?CarCode=11579"
#>  [5] "https://www.sgcarmart.com/new_cars/newcars_overview.php?CarCode=12635"
#>  [6] "https://www.sgcarmart.com/new_cars/newcars_overview.php?CarCode=12507"
#>  [7] "https://www.sgcarmart.com/new_cars/newcars_overview.php?CarCode=12644"
#>  [8] "https://www.sgcarmart.com/new_cars/newcars_overview.php?CarCode=12622"
#>  [9] "https://www.sgcarmart.com/new_cars/newcars_overview.php?CarCode=12650"
#> [10] "https://www.sgcarmart.com/new_cars/newcars_overview.php?CarCode=12651"
#> [11] "https://www.sgcarmart.com/new_cars/newcars_overview.php?CarCode=12589"
#> [12] "https://www.sgcarmart.com/new_cars/newcars_overview.php?CarCode=12649"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...