代码之家  ›  专栏  ›  技术社区  ›  Nettle

Webscrape标题和列表到带有rvest的数据帧

  •  0
  • Nettle  · 技术社区  · 7 年前

    我想删除超链接 on this webpage 数据帧中的列如下所示。源页面包含标题和链接列表。

    • 主题标题(问题)
    • hyperlink.title(确定)
    • 超链接(确定)

    获取链接和标题很简单( html_node “li”和“a”)。我不清楚如何将主题标题合并到最终的数据框架中。

    library(tidyverse)
    library(rvest)
    
    my.url <- read_html("http://www.secnav.navy.mil/fmc/fmb/Pages/Fiscal-Year-2019.aspx") %>% 
      html_nodes("#sharePointMainContent") 
    
    hyperlink.title <- my.url %>% 
      html_nodes("li") %>% 
      html_text()
    
    hyperlink <- my.url %>% 
      html_nodes("li") %>% 
      html_nodes("a") %>% 
      html_attr("href")
    
    df <- tibble(title, hyperlink.title)
    

    我可以成功地刮取标题,但不知道如何将它们正确地合并到最终的数据框架中。

    subject.heading <- my.url %>% 
      html_nodes("h3") %>% 
      html_text() %>% str_trim()
    

    创建日期:2018-09-03 reprex package (v0.2.0版)。

    1 回复  |  直到 7 年前
        1
  •  1
  •   GGamba    7 年前

    那个页面有一个奇怪的结构,主表中有表。

    我发现我的工作是重复( 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版)。