交叉引用公用

crossref-commons的Python项目详细描述


交叉引用共用

用于从crossref api(rest,xml,…)获取数据的高级库。正在工作。

安装

pip3 install crossref-commons

用法

检索实体

通过提供各种类型的实体各自的ID,可以检索它们:

import crossref_commons.retrieval

crossref_commons.retrieval.get_publication_as_json('10.5621/sciefictstud.40.2.0382')
crossref_commons.retrieval.get_publication_as_xml('10.5621/sciefictstud.40.2.0382')
crossref_commons.retrieval.get_publication_as_refstring('10.5621/sciefictstud.40.2.0382', 'ieee')

crossref_commons.retrieval.get_member_as_json('15')

等价地,您可以使用get_entity函数来检索任何类型的实体:

from crossref_commons.retrieval import get_entity
from crossref_commons.types import EntityType, OutputType

get_entity('10.5621/sciefictstud.40.2.0382', EntityType.PUBLICATION, OutputType.JSON)
get_entity('10.5621/sciefictstud.40.2.0382', EntityType.PUBLICATION, OutputType.XML)
get_entity('10.5621/sciefictstud.40.2.0382', EntityType.PUBLICATION, OutputType.REFSTRING, 'ieee')

get_entity('15', EntityType.MEMBER, OutputType.JSON)

检索关系

目前,只支持检索别名:

from crossref_commons.relations import get_alias

get_alias('10.1037//0022-3514.62.3.434')

迭代

可以遍历满足特定条件的出版物(仅限json):

from crossref_commons.iteration import iterate_publications_as_json

filter = {'funder': '10.13039/501100000038', 'type': 'journal-article'}
queries = {'query.author': 'li', 'query.affiliation': 'university'}
for p in iterate_publications_as_json(max_results=189, filter=filter, queries=queries):
  print(p['DOI'])

采样

在某些情况下,最好使用随机样本,而不是遍历满足条件的项。get_sample将自动处理大于crossref rest api的限制100的大小:

from crossref_commons.sampling import get_sample

filter = {'funder': '10.13039/501100000038', 'type': 'journal-article'}
queries = {'query.author': 'li', 'query.affiliation': 'university'}
sample = get_sample(size=121, filter=filter, queries=queries)

授权

您可以通过创建包含以下内容的文件~/.crapi_key来设置礼貌信息和/或加号标记:

{
  "Crossref-Plus-API-Token": "<<Plus API token, for Plus users only>>",
  "User-Agent": "<<polite user agent; including mailto:email address>>",
  "Mailto": "<<email address>>"
}

或者,可以通过环境变量CR_API_PLUSCR_API_AGENTCR_API_MAILTO提供相同的信息。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何使用CircleImageView Android Studio保存图像   java带ArrayList的正数和负数   尝试用java发送邮件时出现电子邮件“异常读取响应”错误   java Maven重定位类调用非重定位类   Java编译器没有给出类型为的封闭实例   java我应该使用哪种设计模式?   java有没有办法通过使用泛型来避免instanceof?   clojure让java集合结构化   java execute postgresql架构脚本Spring DatabasePopulator未终止的美元报价从位置开始   java 安卓视图未从其他类和其他线程更新   在servlet容器中使用rest客户端时的java最佳实践   java<rich:calendar>Locale。美国(翻译成捷克语)   java如何检测jboss集群中是否有JMS实例   java我在安卓上的应用有问题   java使用百分比相对布局创建间距   如何在64位windows上使用java jna?   java如何从html调用servlet,servlet如何调用jsp?   java如何为长文本文章分页