【问题标题】:Get values from children class while web scraping在网络抓取时从儿童类中获取值
【发布时间】:2019-11-04 07:18:30
【问题描述】:

我想从站点获取阶段状态列表。我做了这样的代码:

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">

结果应该是:

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

等等。我应该使用什么函数来解决我的问题?

【问题讨论】:

    标签: html css r web-scraping


    【解决方案1】:

    你可以使用

    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/ - 这里是您示例的屏幕截图:

    【讨论】:

      【解决方案2】:

      您可以从下拉选项中拉出,然后您将获得唯一的列表而不会重复。取决于您是否想要带有重复的完整列表。

      library(rvest)
      library(magrittr)
      
      phases <- (read_html('https://energybase.ru/en/oil-gas-field/index') %>%
                html_nodes('#fieldsearch-phase option') %>%
                html_text())[-1]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-17
        • 1970-01-01
        • 2017-09-22
        • 1970-01-01
        相关资源
        最近更新 更多