使用Rvest和html_element时如何处理xml_missing?

问题描述 投票:0回答:1

我想列出此处列出的每个选举日期:https://voterportal.sos.la.gov/static/ 这样我就可以前往每个相应的选举站点并下载并编译名为“Excel - Complete Results”的电子表格

通常我会通过使用 Rvest 来获取链接网站上列出的每个日期,然后映射日期以到达每个选举网站(只是选举日期附加到父网站 url,如:“https:// voterportal.sos.la.gov/static/2022-04-30"),然后阅读选举网站中链接的 excel,但我遇到了以前从未遇到过的

html_elements
问题:

我试着用

html_elements
拉日期:

la_elections_url <- "https://voterportal.sos.la.gov/static/"

la_elections_text <- read_html(la_elections_url)

la_elections_text %>% html_element("a")

我认为我可以过滤到

href
属性,例如:

html_attr(html_nodes(la_elections_text, "a"), "href") %>% as.list()

要获取选举日期列表,但我收到警告:

la_elections_text %>% html_element("a")

{xml_missing}
<NA>
r web-scraping rvest htmlelements
1个回答
1
投票

本网站使用XHR加载数据,这使得使用基于DOM的

rvest
有点棘手。幸运的是,您可以使用 DevTools 抓取 URL 来自己获取所有数据:

使用

httr
,这变得非常简单:

library(httr)
library(tidyverse)


res <- httr::GET('https://voterportal.sos.la.gov/ElectionResults/ElectionResults/Data?blob=ElectionDates.htm')

res_list <- httr::content(res)

res_list$Dates$Date %>% 
  purrr::map( ~ {
    .x$ElectionDate
  })

哪个给你:

[[1]]
[1] "04/29/2023"

[[2]]
[1] "03/25/2023"

[[3]]
[1] "02/18/2023"

[[4]]
[1] "01/14/2023"

[[5]]
[1] "12/10/2022"

.....
© www.soinside.com 2019 - 2024. All rights reserved.