使用rvest提取链接(包括空白行)

时间:2019-04-13 21:27:48

标签: r

我正在尝试使用rvest从表中提取链接。该表还包括没有链接的行。由于我需要将链接链接到原始表,因此需要包括空白行。 html_attr(“ href”)跳过了这些行,因此无法合并到原始表的链接。

因此,例如,此代码获取具有普通文本的表/

library("rvest")

url <- "http://en.wikipedia.org/wiki/List_of_The_Simpsons_episodes"

simp <- url %>%
  read_html() %>%
  html_nodes(xpath='//*[@id="mw-content-text"]/div/table[3]') %>%
  html_table() %>% 
  extract2(1)

此代码提取链接:

simp2 <- url %>%
  read_html() %>%
  html_nodes(xpath='//*[@id="mw-content-text"]/div/table[3]/tbody/tr/td[3]/a')%>%
  html_attr("href")

然后我想做

cbind(simp1,simp2)

但是,由于该表由23行组成,并且只有13个链接,因此无法正常工作。有人知道如何让html_attr包含空白行,以便向量simp2也具有23个值(带有10个NA或类似的值)吗?或具有其他功能?

1 个答案:

答案 0 :(得分:1)

您可以遍历节点集(无需a!)

library(purrr)
simp2 <- url %>%
  read_html() %>%
  html_nodes(xpath='//*[@id="mw-content-text"]/div/table[3]/tbody/tr/td[3]') %>%
  map_chr(~html_attr(html_node(., "a"), "href"))

为您提供长度为23的向量:

str(simp2)
# chr [1:23] "/wiki/Lance_Kramer" "/wiki/Mark_Kirkland" ...