[英]Pull out the number of citations of a list of DOIs from google scholar using R Studio
[英]r convert list of DOIs to BibTeX
我有一個 DOI 列表,我想將其轉換為 BibTeX 記錄。 bib2doi 包似乎不起作用,所以我使用 R 的 curl 包編寫了以下代碼來掃描列表,創建 bibtex 記錄並將其附加到文件中。 它適用於許多 DOI,但它為 DOI 10.11975/j.issn.1002-6819.2017.z1.035
返回此錯誤(Failed to connect to data.chinadoi.cn port 80: Connection refused)
。 我想不通的是如何寫出壞的 DOI 並繼續前進。 這是帶有三個 DOI 的代碼,第二個 DOI 失敗了。
library(curl)
DOIlist <- c("10.1111/1748-5967.12330", "10.11975/j.issn.1002-6819.2017.z1.035", "10.1016/j.envsci.2019.03.017")
h <- new_handle()
handle_setheaders(h, "accept" = "application/x-bibtex")
for (i in 1:length(DOIlist)) {
url <- paste0("https://doi.org/", DOIlist[i])
print(paste0("url: ", url))
curl_download(url, destfile = "curltest.bib", handle = h, mode = "a")
}
如果您希望for
循環在因 DOI 錯誤而引發錯誤后繼續運行,您可以將curl_download()
調用包裝在try()
。 它仍然會拋出錯誤,但你的循環會繼續:
library(curl)
DOIlist <- c("10.1111/1748-5967.12330", "10.11975/j.issn.1002-6819.2017.z1.035", "10.1016/j.envsci.2019.03.017")
h <- new_handle()
handle_setheaders(h, "accept" = "application/x-bibtex")
for (i in 1:length(DOIlist)) {
url <- paste0("https://doi.org/", DOIlist[i])
print(paste0("url: ", url))
try(curl_download(url, destfile = "curltest.bib", handle = h, mode = "a"))
}
我嘗試運行代碼,結果 .bib 文件只有一個條目。 它似乎沒有附加它們。 下面是截圖。 有沒有其他人遇到過這個問題? 此外,字符串中的第三個 DOI 會導致Connection timed out after 10014 milliseconds
錯誤Connection timed out after 10014 milliseconds
。
我在另一個帖子上找到了答案。 這是我用來讓它工作的代碼
pacman::p_load(curl,readr, tidyverse) # load required packages
urls <- c("https://doi.org/10.1016/j.tvjl.2017.12.021", "https://doi.org/10.1016/j.yqres.2013.10.005")
walk(urls, ~ {
curl(., handle = h) %>%
readLines(warn = FALSE) %>%
write(file = "Desktop\\test.bib", append = TRUE)
})
read_delim("Desktop\\test.bib", delim = "\n") # this will add break lines to your bib file you created
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.