r получение списка имен с сайта во время раскрутки - PullRequest
0 голосов
/ 03 ноября 2019

Я хочу получить список имен с сайта . Я делаю такой код:

library("rvest") 
library("magrittr")

url <- 'https://energybase.ru/en/oil-gas-field/index'
read_html(url) %>% 
        html_nodes(".name")%>% 
             html_children()

и я получил:

 [1] <div class="name">\n            <a href="/en/oil-gas-field/vankorskoe">Ванкорское месторождение</a>\n                            <br><small>\ ...
 [2] <div class="name">\n            <a href="/en/oil-gas-field/russkoe">Русское месторождение</a>\n                            <br><small>\n      ...
 [3] <div class="name">\n            <a href="/en/oil-gas-field/lyantorskoe">Лянторское месторождение</a>\n                            <br><small> ...
 [4] <div class="name">\n            <a href="/en/oil-gas-field/urnenskoye">Урненское месторождение</a>\n                            <br><small>\n ...
 [5] <div class="name">\n            <a href="/en/oil-gas-field/usinskoe">Усинское месторождение</a>\n                            <br><small>\n    ...
 [6] <div class="name">\n            <a href="/en/oil-gas-field/kamennoe-west">Каменное месторождение (западная часть)</a>\n                       ...
 [7] <div class="name">\n            <a href="/en/oil-gas-field/sovetskoe">Советское месторождение</a>\n                            <br><small>\n  ...
 [8] <div class="name">\n            <a href="/en/oil-gas-field/priobskoe-south">Приобское месторождение (южная лицензионная территория (ЮЛТ))</a> ...
 [9] <div class="name">\n            <a href="/en/oil-gas-field/zapadno-surgutskoe">Западно-Сургутское месторождение</a>\n                         ...
[10] <div class="name">\n            <a href="/en/oil-gas-field/north-komsomolskoe">Северо-Комсомольское месторождение</a>\n                       ...
[11] <div class="name">\n            <a href="/en/oil-gas-field/verkhnechonskoye">Верхнечонское месторождение</a>\n                            <br ...
[12] <div class="name">\n            <a href="/en/oil-gas-field/prirazlomnoye-rosneft">Приразломное месторождение (Роснефть)</a>\n                 ...
[13] <div class="name">\n            <a href="/en/oil-gas-field/fyodorovskoe">Фёдоровское месторождение</a>\n                            <br><smal ...
[14] <div class="name">\n            <a href="/en/oil-gas-field/srednebotuobinskoe">Среднеботуобинское месторождение</a>\n                         ...
[15] <div class="name">\n            <a href="/en/oil-gas-field/rogozhnikovskoe">Рогожниковское месторождение</a>\n                            <br ...
[16] <div class="name">\n            <a href="/en/oil-gas-field/yaregskoye">Ярегское месторождение</a>\n                            <br><small>\n  ...
[17] <div class="name">\n            <a href="/en/oil-gas-field/kumkolskoe">Кумкольское месторождение</a>\n                            <br><small> ...
[18] <div class="name">\n            <a href="/en/oil-gas-field/filanovskogo">Месторождение им. В. Филановского</a>\n                            < ...
[19] <div class="name">\n            <a href="/en/oil-gas-field/sugmutskoe">Сугмутское месторождение</a>\n                            <br><small>\ ...
[20] <div class="name">\n            <a href="/en/oil-gas-field/meretoyahinskoe">Меретояхинское месторождение</a>\n                            <br ...

Я хочу получитьвсе из данных после <a href="/en/oil-gas-field/....">

Ванкорское месторождение
Русское месторождение...

и так далее. Когда я пытался поставить

read_html(url) %>% 
    html_nodes(".name")%>% 
         html_children() %>% 
            html_attr("/en/oil-gas-field/")

, я получил:

    [1] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
[49] NA NA NA NA NA NA NA NA NA NA NA NA

Какую функцию я должен использовать? Как я могу решить мою проблему?

1 Ответ

1 голос
/ 04 ноября 2019

Вы хотите прямого потомка a родителя с классом name. Вы можете использовать css child combinator для этого

library(rvest)
library(magrittr)

titles <- read_html('https://energybase.ru/en/oil-gas-field/index') %>%
          html_nodes('.name > a') %>%
          html_text()
...