从 DOI 获取元数据

Posted

技术标签:

【中文标题】从 DOI 获取元数据【英文标题】:Get metadata from DOI 【发布时间】:2012-05-17 10:25:58 【问题描述】:

digital object identifier (DOI) 是一个全球唯一的字符串,用于标识电子文档(例如,学术文章的 PDF)。它本质上提供了一种创建文档永久链接的方法(例如,http://dx.doi.org/10.1145/146585.146609)。

是否有网络服务(或任何其他系统)可以从给定 DOI 获取文档的元数据(最好是 BibTeX 形式)?

编辑添加了一些说明性信息。

【问题讨论】:

我也不确定为什么关闭,但这里有相关信息crosscite.org/cn 既然问题已经结束,我会在cmets中回答:curl -LH "Accept: text/bibliography; style=bibtex" http://dx.doi.org/10.1038/nrd842 另外,寻找 JabRef。 @anumi 问题已重新打开,如果您想将您的评论转换为答案。 您知道自己在 Stack Exchange 上需要两年时间才能重新打开一个问题。 【参考方案1】:

Section 5.4.1 Content Negotiation DOI 手册文档指出,“DOI 注册机构正在为其 DOI 名称实施内容协商,特别是为用户提供增值元数据表示。”根据http://crosscite.org 的 DOI 内容协商文档中的Section 4 Supported Content Types,“目前三个 DOI 注册机构已经为其 DOI 实施了内容协商:CrossRef、DataCite 和 mEDRA。”支持的格式列表(取决于注册机构)包括通过Accept: application/x-bibtex 的BibTeX(这是http://doi2bib.org 使用的方法)和通过Accept: text/bibliography 格式化的书目条目(这是上面的the approach suggested by @anumi)。使用后一种标头时,必须指定style=bibtex媒体类型参数。

这两种相关的 mimetype 提供了略微不同的表示。使用Accept: application/x-bibtexGET http://dx.doi.org/10.1038/nrd842 的请求会产生响应

@articleAtkins_2002,
    doi = 10.1038/nrd842,
    url = http://dx.doi.org/10.1038/nrd842,
    year = 2002,
    month = jul,
    publisher = Springer Nature,
    volume = 1,
    number = 7,
    pages = 491--492,
    author = Joshua H. Atkins and Leland J. Gershell,
    title = From the analyst\textquotesingles couch: Selective anticancer drugs,
    journal = Nature Reviews Drug Discovery

Accept: text/bibliography; style=bibtex

@articleAtkins_2002, title=From the analyst’s couch: Selective anticancer drugs, volume=1, ISSN=1474-1784, url=http://dx.doi.org/10.1038/nrd842, DOI=10.1038/nrd842, number=7, journal=Nature Reviews Drug Discovery, publisher=Springer Nature, author=Atkins, Joshua H. and Gershell, Leland J., year=2002, month=Jul, pages=491–492

【讨论】:

把这些放在一起很棒!我会把它标记为答案,它真的很有帮助。【参考方案2】:

curl -LH "Accept: text/bibliography; style=bibtex" http://dx.doi.org/10.1038/nrd842

【讨论】:

还有doi2bib.org/#/doi的doi2bib(“给我们一个DOI,我们会尽最大努力为您提供BibTeX条目”) 这个请求/响应接口是否记录在某个地方?您是如何找到此功能的? @argentpepper:抱歉,我不记得了。 @argentpepper:显然是官方的:cros-s-ref.org/labs/citation-formatting-service【参考方案3】:

看看这些人是如何实现它的:www.doi2bib.org。

我在我的一个项目中做了什么:

查看了他们的url 请求结构:http://www.doi2bib.org/doi2bib + ?id= + your doi here。 然后使用他们的...以及API 来获取数据(例如http://www.doi2bib.org/doi2bib?id=10.1016%2Fj.actpsy.2016.09.007)并且响应是: @articleLeinen_2016, doi = 10.1016/j.actpsy.2016.09.007, url = http://dx.doi.org/10.1016/j.actpsy.2016.09.007, year = 2016, month = nov, publisher = Elsevier BV, volume = 171, pages = 36--46, author = Peter Leinen and Stefan Panzer and Charles H. Shea, title = Hemispheric asymmetries of a motor memory in a recognition test after learning a movement sequence, journal = Acta Psychologica 然后你可以按照你想要的方式解析它。

这帮助我完成了我需要做的事情。但是,最好的方法是查看他们的 GitHub 存储库并尝试构建自己的存储库。

希望对你有帮助!

【讨论】:

谢谢!他们的应用程序似乎在发出类似于上述@anumi (GET http://dx.doi.org/whatever) 的请求,但标题为Accept: application/x-bibtex; charset=utf-8 而不是Accept: text/bibliography; style=bibtex。我将使用此信息创建一个新答案。【参考方案4】:

CrossRef has an API,您可以使用可从http://www.cros-s-ref.org/requestaccount/ 免费获取的 API 密钥。

【讨论】:

不再可用。 @IGP 您不必再注册了。 API 仍然有效。

以上是关于从 DOI 获取元数据的主要内容,如果未能解决你的问题,请参考以下文章

从 Spotify 获取大量元数据

从 Youtube 视频中获取视频元数据

如何从 HealthKit 获取元数据?

如何使用 HealthKit 从 iHealth 获取元数据?

如何使用 HealthKit 从 iHealth 获取元数据?

如何从 C# 中的文件中获取元数据? [复制]