【问题标题】:How to scrape link and text of webpages using rvest?如何使用 rvest 抓取网页的链接和文本?
【发布时间】:2021-12-25 07:29:29
【问题描述】:

我正在尝试使用R 中的rvest 抓取阿根廷总统的演讲。这是我到目前为止编写的代码:

library(purrr)
library(rvest)
library(stringr)

url_president <- "https://www.casarosada.gob.ar/informacion/discursos?page=%d"

# extract relevant data on webpage
map_df(1:2, function(i) {
  pg <- read_html(sprintf(url_president, i))
  data.frame(
    title = html_text(html_nodes(pg, ".category-item-title h3")) %>%
      str_trim(),
    date = html_text(html_nodes(pg, "time")),
    link = html_elements(pg, css = ".category-item-title h3") %>% html_attr('href'),
    stringsAsFactors = FALSE
  )
  
}) -> argentina_speeches_pres

这会捕获演讲的标题和日期,但不会捕获链接(我想用它来抓取文本)。有人可以帮我解决这个问题吗?我不确定出了什么问题。

【问题讨论】:

    标签: r web-scraping purrr rvest stringr


    【解决方案1】:

    您需要使用不同的 CSS 选择器来获取链接。试试 -

    library(rvest)
    library(tidyverse)
    
    url_president <- sprintf("https://www.casarosada.gob.ar/informacion/discursos?page=%d", 1:2)
    
    map_df(url_president, function(i) {
      pg <- read_html(i)
      tibble(
        title = html_nodes(pg, ".category-item-title h3") %>% html_text() %>%  str_trim(),
        date = html_nodes(pg, "time") %>% html_text() %>% str_trim(),
        link = html_elements(pg, 'a.panel') %>% 
          html_attr('href') %>% 
          paste0('https://www.casarosada.gob.ar', .),
      )
      
    }) -> argentina_speeches_pres
    
    argentina_speeches_pres
    
    # A tibble: 80 x 3
    #   title                                         date            link                                        
    #   <chr>                                         <chr>           <chr>                                       
    # 1 Palabras del presidente de la Nación, Albert… Jueves 11 de N… https://www.casarosada.gob.ar/informacion/d…
    # 2 Palabras del presidente de la Nación, Albert… Viernes 05 de … https://www.casarosada.gob.ar/informacion/d…
    # 3 Palabras del presidente de la Nación, Albert… Viernes 05 de … https://www.casarosada.gob.ar/informacion/d…
    # 4 Palabras del presidente de la Nación, Albert… Jueves 04 de N… https://www.casarosada.gob.ar/informacion/d…
    # 5 PALABRAS DEL PRESIDENTE DE LA NACIÓN, ALBERT… Miércoles 03 d… https://www.casarosada.gob.ar/informacion/d…
    # 6 Palabras del presidente de la Nación, Albert… Martes 02 de N… https://www.casarosada.gob.ar/informacion/d…
    # 7 Palabras del presidente de la Nación, Albert… Miércoles 27 d… https://www.casarosada.gob.ar/informacion/d…
    # 8 Palabras del Presidente de la Nación, Albert… Miércoles 27 d… https://www.casarosada.gob.ar/informacion/d…
    # 9 Palabras del presidente de la Nación, Albert… Miércoles 20 d… https://www.casarosada.gob.ar/informacion/d…
    #10 Palabras del presidente de la nación, Albert… Miércoles 20 d… https://www.casarosada.gob.ar/informacion/d…
    # … with 70 more rows
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-31
      • 1970-01-01
      • 2020-07-18
      • 2019-02-17
      • 1970-01-01
      • 2018-07-19
      • 1970-01-01
      • 2019-01-19
      相关资源
      最近更新 更多