r получение значений из класса детей при утилизации в Интернете - PullRequest
1 голос
/ 04 ноября 2019

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

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

url <- 'https://energybase.ru/en/oil-gas-field/index'

read_html(url) %>% 
        html_nodes(".info")%>% 
             html_children()%>% 
                  html_children()

и получаю:

 [1] <small>City</small>
 [2] <div class="value">Игарка</div>
 [3] <small>Phase state</small>
 [4] <div class="value">нефтегазовое</div>
 [5] <small>Извлекаемые запасы A+B1+B2+C1</small>
 [6] <div class="value">479.10 mln. tons</div>
 [7] <small>City</small>
 [8] <div class="value">Тазовский</div>
 [9] <small>Phase state</small>
[10] <div class="value">газонефтяное</div>
[11] <small>Извлекаемые запасы A+B1+B2+C1</small>
[12] <div class="value">422.00 mln. tons</div>
[13] <small>City</small>
[14] <div class="value">Лянтор</div>
[15] <small>Phase state</small>
[16] <div class="value">нефтегазоконденсатное</div>
[17] <small>Извлекаемые запасы A+B1+B2+C1</small>
[18] <div class="value">380.00 mln. tons</div>
[19] <small>City</small>
[20] <div class="value">Тобольск</div>

Я хочу получить все заметки после

<div class="value">

результат должен быть:

нефтегазовое
газонефтяное
нефтегазоконденсатное

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

Ответы [ 2 ]

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

Вы можете просто вытащить из выпадающих опций, тогда вы получите уникальный список без повторов. Зависит от того, хотите ли вы полный список с повторениями или нет.

library(rvest)
library(magrittr)

phases <- (read_html('https://energybase.ru/en/oil-gas-field/index') %>%
          html_nodes('#fieldsearch-phase option') %>%
          html_text())[-1]
1 голос
/ 04 ноября 2019

Вы можете использовать

read_html(url) %>% 
  html_nodes(".col-md-8:nth-child(2) .value") %>% 
  html_text

, чтобы получить

 [1] "нефтегазовое"          "газонефтяное"          "нефтегазоконденсатное" "нефтяное"             
 [5] "нефтяное"              "нефтегазовое"          "нефтяное"              "нефтяное"             
 [9] "нефтяное"              "нефтегазоконденсатное" "нефтегазоконденсатное" "нефтяное"             
[13] "нефтегазоконденсатное" "нефтегазоконденсатное" "нефтяное"              "нефтяное"             
[17] "газонефтяное"          "нефтегазоконденсатное" "нефтяное"              "нефтегазовое"  

Очень хороший инструмент для выбора правильного css-селектора (.col-md-8:nth-child(2) .value) - https://selectorgadget.com/ -Вот скриншот для вашего примера:

enter image description here

...