【发布时间】:2023-10-10 23:06:01
【问题描述】:
我抓取this 页面以获取其中列出的每个人的 (1) 姓名、(2) 角色/编辑头衔和 (3) 所属机构。
问题是有些人没有机构隶属关系。我想用NA 替换这些缺失值,但我的尝试都没有奏效。
感谢您的帮助!到目前为止,这是我的代码:
journal_url <- "https://www.journals.elsevier.com/academic-pediatrics/editorial-board"
webpage <- xml2::read_html(journal_url)
webpage <- rvest::html_nodes(webpage, "div.publication-editors")
editorsnodes <- rvest::html_children(webpage)
titlesnodesnum <- which(rvest::html_attr(editorsnodes, "class") == "publication-editor-type")
titles <- editorsnodes[titlesnodesnum]
titles <- rvest::html_text(titles)
titles <- trimws(titles)
titlesnodesnum <- c(titlesnodesnum, length(editorsnodes)+1) #identify the last record
editors <- lapply(2:length(titlesnodesnum), function(n){
start<- titlesnodesnum[n-1]+1 #starting node in subcategory
end <- titlesnodesnum [n]-1 #ending node in subcategory
names <- editorsnodes[start:end]
names <- rvest::html_nodes(names, "div.publication-editor-name")
names <- rvest::html_text(names)
names <- trimws(names)
})
我的主要尝试是在editors <- lapply([...]) 部分中插入一个for-loop,其中包含if(length(names) == 0) names <- NA 之类的内容,但没有任何效果。
P。 S. 我的数据结构可能看起来很复杂,但我需要为此目的保留嵌套列表的结构(有关背景,请参阅我之前发布的 this other question - 以及我从下面获得的大部分代码)。
【问题讨论】:
标签: r web-scraping nested-lists rvest