我正在 R Studio 中开发一个小程序,它应该能够从谷歌学者的特定科学论文中提取 DOI 列表的引用次数。到目前为止,我的代码看起来像这样(我使用了一个测试 DOI 向量,我的真实向量包含大约 450 个 DOI)。
library(tibble)
library(dplyr)
library(rvest)
library(purrr)
library(xml2)
library(XML)
library(gsubfn)
library(proto)
library(readxl)
test.doi <- c("10.1111/j.1749-5687.2011.00133.x", "10.2307/20159610", "10.1111/j.1467-954X.2001.tb03531.x")
html_test.doi.list <- list()
for (i in test.doi){
urli <- paste0("https://scholar.google.de/scholar?hl=de&as_sdt=0%2C5&q=", i, "&btnG=")
html_test.doi.list[[i]] <- read_html(urli)
}
citnum <- html_test.doi.list %>%
map(.f=function(x){
html_nodes(x, xpath='/html/body/div/div[11]/div[2]/div[2]/div[2]/div[1]/div/div[3]/a[3]') %>%
html_text()
})
citnum2 <- html_test.doi.list %>%
map(.f=function(x){
html_nodes(x, xpath='/html/body/div/div[11]/div[2]/div[2]/div[2]/div[1]/div/div[2]/a[3]') %>%
html_text()
})
citnum <- replace(citnum, citnum=="character(0)", 99999)
citnum2 <- replace(citnum2, citnum2=="character(0)", 99999)
citnumclear <- gsub("\\D","",citnum)
citnum2clear <- gsub("\\D","",citnum2)
cit.table <- cbind(test.doi, citnumclear, citnum2clear)
View(cit.table)
主要问题是包含从 HTML 代码中获取正确部分的部分,因为引用的数量似乎没有出现在同一个位置。我试图通过采用不同的 xpath 来提高获取信息的机会(在我的示例中为 citnum + citnum2)来避免该问题。但我不认为这是最好的方法。也许你们中的一些人可能有任何想法?