那个页面有一个奇怪的结构,主表中有表。
我发现我的工作是重复(
map_df()
)父表的单元格(由
s4-wpcell-plain
类)。每个单元格都包含另一个表,但我们可以简单地提取所需内容,而不是依赖
html_table()
.
library(tidyverse)
library(rvest)
#> Loading required package: xml2
r <- read_html("http://www.secnav.navy.mil/fmc/fmb/Pages/Fiscal-Year-2019.aspx") %>%
html_node("#sharePointMainContent>div>table") %>%
html_nodes(".s4-wpcell-plain") %>%
map_df(~{
heading <- .x %>% html_nodes('h3') %>% html_text() %>% str_trim()
titles <- .x %>% html_nodes('li') %>% html_text()
links <- .x %>% html_nodes('a') %>% html_attr("href")
data_frame(heading, titles, links)
})
r
#> # A tibble: 21 x 3
#> heading titles links
#> <chr> <chr> <chr>
#> 1 DEPARTMENT OF THE NAVY SUMMARY FY 19 DON Press Brief http://www.secnaâ¦
#> 2 DEPARTMENT OF THE NAVY SUMMARY Supporting Exhibits http://www.secnaâ¦
#> 3 DEPARTMENT OF THE NAVY SUMMARY Budget Highlights Book http://www.secnaâ¦
#> 4 DEPARTMENT OF THE NAVY SUMMARY The Bottom Line http://www.secnaâ¦
#> 5 DEPARTMENT OF THE NAVY SUMMARY Report to Congress on⦠http://www.secnaâ¦
#> 6 DEPARTMENT OF THE NAVY SUMMARY Ship Building Plan SE⦠http://www.secnaâ¦
#> 7 MILITARY PERSONNEL PROGRAMS Military Personnel, N⦠http://www.secnaâ¦
#> 8 MILITARY PERSONNEL PROGRAMS Military Personnel, M⦠http://www.secnaâ¦
#> 9 MILITARY PERSONNEL PROGRAMS Reserve Personnel, Na⦠http://www.secnaâ¦
#> 10 MILITARY PERSONNEL PROGRAMS Reserve Personnel, Ma⦠http://www.secnaâ¦
#> # ... with 11 more rows
创建日期:2018-09-04
reprex package
(v0.2.0版)。