使用rvest和xpath刮取值

时间:2019-06-03 18:58:11

标签: r web-scraping rvest

尝试提取下一页http://www.thinkbabynames.com/popular/1/us上的所有NAME

我在R中使用rvest软件包。

以下代码可让我获得出现在“前10名”和“趋势”部分的名称。

url <- http://www.thinkbabynames.com/popular/1/us

get_names <- function(html){
  names <- html %>% 
    read_html() %>%
    html_nodes('a b') %>%  
    html_text()

names <- get_names(url)

对于“ Top 11-2000”中的名称,我使用了以下代码,但它返回了一个空字符。

get_names2 <- function(html){
  html.read <- html %>% 
    read_html() %>% 
    html_nodes(xpath='//*[@id="load"]/table/tbody/tr/td[2]/a') %>% 
    html_text()
}
names2 <- get_names2(url)

我是HTML代码的新手,任何建议将不胜感激

1 个答案:

答案 0 :(得分:0)

我也是HTML和rvest的新手,这是我的探索。希望能对您有所帮助,并将其余的留给您:

url <- 'http://www.thinkbabynames.com/popular/1/us'

name = read_html(url)

name %>% 
  html_nodes("table") %>% 
  html_table(fill= TRUE) %>% 
  .[[9]] -> top2000

> head(top2000)
      X1                                                                                        X2
1   Rank                                                                                      Name
2 11-20.  Alexander,  Oliver,  Daniel,  Lucas,  Matthew,  Aiden,  Jackson,  Logan,  David,  Joseph
3 21-30.     Samuel,  Henry,  Owen,  Sebastian,  Gabriel,  Carter,  Jayden,  John,  Luke,  Anthony
4 31-40.    Isaac,  Dylan,  Wyatt,  Andrew,  Joshua,  Christopher,  Grayson,  Jack,  Julian,  Ryan
5 41-50.    Jaxon,  Levi,  Nathan,  Caleb,  Hunter,  Christian,  Isaiah,  Thomas,  Aaron,  Lincoln
6 51-60. Charles,  Eli,  Landon,  Connor,  Josiah,  Jonathan,  Cameron,  Jeremiah,  Mateo,  Adrian