如何使用 rvest 抓取 link 和网页文本?
How to scrape link and text of webpages using rvest?
我正在尝试使用 rvest
在 R
中抓取阿根廷总统的演讲。这是我到目前为止编写的代码:
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
这会捕获演讲的标题和日期,但不会捕获 link(我想用它来抓取文本)。有人可以帮我解决这个问题吗?我不确定出了什么问题。
您需要使用不同的 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
我正在尝试使用 rvest
在 R
中抓取阿根廷总统的演讲。这是我到目前为止编写的代码:
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
这会捕获演讲的标题和日期,但不会捕获 link(我想用它来抓取文本)。有人可以帮我解决这个问题吗?我不确定出了什么问题。
您需要使用不同的 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