for 循环检查 R 中是否存在 xpaths 列表

for loop to check if list of xpaths exists in R

我有一个 html_nodes 的列表,我想检查它们是否存在于一个页面中,return 如果存在则为 1,如果不存在则为 0。

我已经为每个节点手动尝试了 "if" 功能,但由于它们可能会随着时间的推移而变化,因此我需要从整个网站上抓取所有可用节点并检查每个页面上的每个节点。

我有什么

data<-foreach(i=urls) %dopar% {
node1 <- read_html(i) %>% html_nodes(xpath = node1) %>%  html_text()
if (length(node1)>0){
node1<-1
} else{
node1<-0
}
node2 <- read_html(i) %>% html_nodes(xpath = node2) %>%  html_text()
if (length(node1)>0){
node2<-1
} else{
node2<-0
}
}

我需要类似这样的东西(直觉):

data<-foreach(i=urls) %dopar% {
for (j in nodes) {  
node <- read_html(i) %>% html_nodes(xpath = j) %>%  html_text()
if (length(node)>0){
node<-1
} else{
node<-0
}
}
}

你快到了,你的节点确实需要一个循环。 sapply co 是你的朋友:

data <- foreach(i=urls) %dopar% {
   sapply(nodes, function(j)  
       length(read_html(i) %>% html_nodes(xpath = j) %>%  html_text()) > 0)
}