r在进行网站抓取时从网站获取名称列表

时间:2019-11-03 20:19:02

标签: html r web-scraping rvest

我想从site.获取姓名列表 我编写这样的代码:

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 个答案:

答案 0 :(得分:2)

您想要父类为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()