【问题标题】:Get list of names from site while web-scraping在网络抓取时从站点获取名称列表
【发布时间】:2021-02-06 17:58:23
【问题描述】:

我想从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 ...

我想从&lt;a href="/en/oil-gas-field/...."&gt;之后的数据中获取全部

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

等等。 当我试图把

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

我应该使用什么功能? 我该如何解决我的问题?

【问题讨论】:

  • 如果您之前的问题得到了满意的解决,您应该考虑接受一些答案。 stackoverflow.com/help/someone-answers
  • 我搜索了其他问题的答案,没有找到
  • 我的意思是你以前问过问题,但似乎没有接受任何给定的答案。您不必这样做,但它很有帮助。
  • 请不要使用网络标签。这是没有意义的。

标签: html r web-scraping rvest


【解决方案1】:

您想要类 name 的父级的直接子级 a。您可以为此使用 css child combinator

library(rvest)
library(magrittr)

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

【讨论】:

  • 这很好。我的意思更笼统地说是为了对那些回答过你之前问题的人表示礼貌。它只是在学习该网站的工作原理:-)
猜你喜欢
  • 2010-12-11
  • 2017-10-16
  • 2020-06-20
  • 2020-05-11
  • 2019-11-16
  • 2018-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多