返回空字符的简单 rvest 代码

Simple rvest code returning empty character

我正在尝试使用选择器小工具从 'Printer-Friendly Minutes' link 上的 this website 抓取 href。通常有效,但这次我只是得到一个空字符来代替我试图抓取的 href。

代码如下:

url <- "http://www.richmond.ca/cityhall/council/agendas/council/2021/012521_minutes.htm"
try <- url %>% read_html %>% html_nodes(".first-child a") %>% html_attr("href") 

有人知道可能出了什么问题吗?

我认为您只是没有正确选择节点。学习xpath真的很有帮助,可以在html:

中进行精确的节点导航
library(rvest)

domain <- "http://www.richmond.ca" 

url <- paste0(domain, "/cityhall/council/agendas/council/2021/012521_minutes.htm")

pdf_url <- url %>% 
         read_html %>% 
         html_nodes(xpath = "//a[@title='PFM_CNCL_012521']") %>% 
         html_attr("href") %>%
         paste0(domain, .)

pdf_url
#> [1] "http://www.richmond.ca/__shared/assets/PFM_CNCL_01252157630.pdf"

我们可以看到这是一个有效的 link 通过获取结果:

httr::GET(pdf_url)
#> Response [https://www.richmond.ca/__shared/assets/PFM_CNCL_01252157630.pdf]
#>   Date: 2021-10-18 20:35
#>   Status: 200
#>   Content-Type: application/pdf
#>   Size: 694 kB
#> <BINARY BODY>

reprex package (v2.0.0)

于 2021-10-18 创建

由于 PFM 用作分钟的缩写,您可以通过该子字符串定位 href

library(rvest)
library(magrittr)

url <- "http://www.richmond.ca/cityhall/council/agendas/council/2021/012521_minutes.htm"

read_html(url) %>% 
  html_element('[href*=PFM]') %>% 
  html_attr('href')

您还可以使用它与前面的img 标记的相邻兄弟关系,它可以很好地通过它的alt 属性值来定位:

read_html(url) %>%
  html_element('[alt="PDF Document"] + a') %>%
  html_attr('href')