未提供项目说明

nhm-pyportal的Python项目详细描述


pyportal公司

自然历史博物馆Data Portal的API的Python包装器。在

此模块是新的,正在开发中,因此不包括通过API提供的所有操作;它优先考虑记录搜索功能。它很容易在不同版本之间发生巨大的变化。在

我们有更多通用(和全面的)API文档可用here。在

要求

  • Python 3.7+

安装

pip install -e git+git://github.com/NaturalHistoryMuseum/nhm-pyportal.git#egg=pyportal

快速启动使用

首先创建一个API对象:

^{pr2}$

搜索

您可以搜索所有记录,也可以专门搜索资产/介质。两者的语法非常相似。在

frompyportalimportconstants# specify any resource you want, but the IDs for the specimens and index lots resources are built inresource_id=constants.resources.specimens# find all records in the specimens resourcesearch=api.records(resource_id)# OR find all assets (images) in the specimens resourcesearch=api.assets(resource_id)

上面的搜索相当于数据门户网站上的this search。在

有一个helper方法可以将数据门户URL转换为可以传递给搜索构造函数的dict。在

url='https://data.nhm.ac.uk/dataset/56e711e6-c847-4f99-915a-6894bb5c5dea/resource/05ff2255-c38a-40c9-b657-4ccb55ab2feb?filters=collectionCode%3Abot'# these two searches are equivalentprint(api.records(constants.resources.specimens,collectionCode='bot').count())# 775440print(api.records(**api.from_url(url)).count())# 775440

您可以指定以下参数(所有参数都是可选的):

  • query:自由文本搜索,例如query='bugs'
  • sort:字段和排序方向的列表,例如sort=['country asc', 'family desc']
  • fields:为每个记录返回的字段列表(留空则返回全部),例如fields=['country', 'family', 'genus']
  • offset:跳过第一个n结果,例如offset=50
  • limit:只返回n结果per page(默认为100),例如limit=10

任何其他关键字参数都将被视为filters。在

search=api.records(constants.resources.specimens,query='bugs',sort=['country asc','family desc'],fields=['country','family','genus'],offset=50,limit=10)

查看结果

使用.all()迭代所有结果(忽略limit):

forrecordinsearch.all():print(record)

或者只需使用.first()查看第一个:

print(search.first())

您还可以使用.next()一次查看一个页面(按limit设置大小的记录块):

try:page=search.next()forrecordinpage:print(record)exceptStopIteration:# raised by search.next() if there's no next pageprint('No more results.')

如果只需要记录总数,请使用.count()

print(search.count())

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

推荐PyPI第三方库


热门话题
JFrame中的Java多线程   java Servlet异常映射   java无法从输出流读取   swing Java带来的小程序GUI问题   java什么原因导致错误“'void'类型此处不允许”以及如何修复它?   Java选择器select(长)与selectNow的区别   java自定义arraylist<mygames>获得不同   java Icepdf注释让页面消失   java反向整数数组   java I在生成同步“无法解析配置的所有依赖项”时遇到此错误:app:debugRuntimeClasspath   多个虚拟机上的java线程访问单个DB实例上的表,有时会导致性能低下和异常   swing更改Java中的默认按钮,使其看起来“更好”   java慢速MQ主题订阅。并行化不能提高性能   java运行Boggle Solver需要一个多小时。我的代码怎么了?   数据库中的java循环与应用程序中的java循环   正则表达式匹配${123…456}并在Java中提取2个数字?   java如何制作我们软件的试用版   Java内存参数计算   从另一个类调用方法时出现java问题