刮a节点

时间:2018-09-02 03:00:58

标签: web-scraping rvest

我正在抓取一个“草率”节点,其中包含相同数据的多个元素。下面的代码从列出唱片集的页面上刮下城市日期。我只希望每个专辑的第一个城市日期实例,但是我不确定如何编写代码,以便仅返回第一个城市日期实例。

  p{
       position:relative;
  }

1 个答案:

答案 0 :(得分:1)

要抓取的页面中没有太多层次结构。这意味着您将需要查看其他结构。似乎每个日期前面都有一个h3标头。知道了这一点,我们可以建立一个索引来获取您想要的值。

首先获取所有h3.date节点:

nodes <- read_html("https://www.jazzdisco.org/atlantic-records/catalog-1200-series/") %>%
  html_nodes("h3,.date")

现在为索引。我们想找到h3后跟.date的位置。我已经使用html_namepaste函数来测试结构,但是您可以根据需要构建它。

index <- c()

for (n in 1:(length(nodes) - 1)) {

    if (paste(html_name(nodes[n]), html_name(nodes[n+1]), sep = "_") == 'h3_div') {
      index <- c(index, n)
    }

}

现在使用索引,我们可以获得.date节点。我的测试与h3节点匹配,因此我们必须加1才能获得.date

citydate <- nodes[index + 1] %>% html_text()