网络抓取将不会返回正确的文本数据

时间:2018-09-06 19:04:39

标签: r web-scraping tidyverse rvest

我正试图从Second Songs网站上获取一张简单的桌子。我在R中使用以下代码和rvest包。

library(tidyverse)
library(rvest)

levee_breaks_url <- html('https://secondhandsongs.com/performance/17982')

levee_breaks_url %>% 
  html_node('.field-performer') %>% 
  html_text()

哪个返回

[1] "Performer "

我的目标是获取页面上表中所有信息的列表。我试过包括html_node('.container'),但结果不正确。

我正在使用selector gadget,并在抓取其他网站方面取得了成功,但是我在此问题上停留了一段时间。

1 个答案:

答案 0 :(得分:3)

尝试一下。这将刮擦所有表,将它们组合在一起,然后为列指定正确的名称。

library(tidyverse)
library(rvest)

levee_breaks_url <- read_html('https://secondhandsongs.com/performance/17982')

df <- levee_breaks_url %>% 
  html_nodes('.table') %>% 
  html_table() %>%
  reduce(rbind) %>%
  select(-1) %>%
  rename_all(~levee_breaks_url %>% 
               html_nodes('th') %>% 
               html_text() %>% 
               .[2:5]) %>%
  as.tibble()

df
#> # A tibble: 32 x 4
#>    `Title `       `Performer `         `Release date `  Info              
#>    <chr>          <chr>                <chr>            <chr>             
#>  1 When the Leve… Kansas Joe and Memp… 1929             First release     
#>  2 When the Leve… John Campbell        February 20, 19… ""                
#>  3 When the Leve… Clint Black          2005             ""                
#>  4 When the Leve… Bennett Harris       August 27, 2008  ""                
#>  5 When the Leve… Buckwheat Zydeco     2009             ""                
#>  6 Levee Breaks   Beverley Martyn      April 2014       ""                
#>  7 When the Leve… Danny B. Harvey - M… October 14, 2014 ""                
#>  8 When the Leve… Led Zeppelin         November 8, 1971 First releaseSamp…
#>  9 When the Leve… Judge                1990             ""                
#> 10 When the Leve… Rosetta Stone        October 14, 1991 Unverified        
#> # ... with 22 more rows

reprex package(v0.2.0)于2018-09-06创建。