在R中使用DOI下载一篇文章

在R中使用DOI下载一篇文章,r,wget,rcurl,doi,R,Wget,Rcurl,Doi,我有一篇文章的DOI,我想知道是否有R函数可以基于此DOI下载pdf文件,而用户不必手动下载pdf?部分答案: 实际上,这是一个难题,与R。。。您能否演示如何以任何语言或设置从DOI转换为PDF 我能找到的最好的是: 您可以使用curl(可能因此RCurl或其他东西)来查询crossref内容协商系统。这可以为您的DOI返回引用。从那以后,获取PDF文件就很难了。。。如果你想这样做的话,至少你可以得到一个URL来获取PDF链接 这是jabRef用于将DOI转换为引文的方法 像Mendeley和

我有一篇文章的DOI,我想知道是否有R函数可以基于此DOI下载pdf文件,而用户不必手动下载pdf?

部分答案:

实际上,这是一个难题,与R。。。您能否演示如何以任何语言或设置从DOI转换为PDF

我能找到的最好的是:

您可以使用curl(可能因此
RCurl
或其他东西)来查询crossref内容协商系统。这可以为您的DOI返回引用。从那以后,获取PDF文件就很难了。。。如果你想这样做的话,至少你可以得到一个URL来获取PDF链接

这是jabRef用于将DOI转换为引文的方法

像Mendeley和Zotero这样的人已经编写了从网页到PDF的解析器。但我不认为有现成的方法可以做到这一点。

部分答案:

实际上,这是一个难题,与R。。。您能否演示如何以任何语言或设置从DOI转换为PDF

我能找到的最好的是:

您可以使用curl(可能因此
RCurl
或其他东西)来查询crossref内容协商系统。这可以为您的DOI返回引用。从那以后,获取PDF文件就很难了。。。如果你想这样做的话,至少你可以得到一个URL来获取PDF链接

这是jabRef用于将DOI转换为引文的方法


像Mendeley和Zotero这样的人已经编写了从网页到PDF的解析器。但我不认为有现成的方法可以做到这一点。

您可以使用
httr
来查看DOI指向的位置,方法是构造一个指向
DOI.org
的URL并获取标题:

library(httr)
headers = HEAD("http://doi.org/10.7150/ijms.11309")
headers$url
# [1] "http://www.medsci.org/v12p0264.htm"
在本例中,PDF似乎与该页面位于同一位置,但扩展名为
.PDF
。但并非所有期刊都是如此

因此,对于本杂志,PDF位于:

sub(".htm$",".pdf",headers$url)
# [1] "http://www.medsci.org/v12p0264.pdf"
因此,我可以这样做:

download.file(sub(".htm$",".pdf",headers$url),"paper.pdf")

获取PDF

您可以使用
httr
通过构造
DOI.org
的URL并获取标题来查看DOI指向的位置:

library(httr)
headers = HEAD("http://doi.org/10.7150/ijms.11309")
headers$url
# [1] "http://www.medsci.org/v12p0264.htm"
在本例中,PDF似乎与该页面位于同一位置,但扩展名为
.PDF
。但并非所有期刊都是如此

因此,对于本杂志,PDF位于:

sub(".htm$",".pdf",headers$url)
# [1] "http://www.medsci.org/v12p0264.pdf"
因此,我可以这样做:

download.file(sub(".htm$",".pdf",headers$url),"paper.pdf")

获取PDF

我猜,如果你没有机构访问权限,这些文章通常都在付费墙后面,你可能会很挣扎。@TheLate Mail,让我们假设我有机构访问权限,如果你告诉我们DOI,我们可能会找到一种适用于该杂志的方法。DOI通常不必有PDF版本,因此一般问题无法解决。@Spacedman,例如
DOI:10.7150/ijms.11309
我猜如果你没有机构访问权限,这些文章通常都会隐藏在付费墙后面,你可能会遇到困难。@thelatemail,让我们假设我已经制度化了access,如果你告诉我们DOI,我们也许能够找到一种适用于该日志的方法。DOI通常不必有PDF版本,因此一般问题无法解决。@Spacedman,例如
DOI:10.7150/ijms.11309
high five that perfect high five that perfect