未提供项目说明
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
对象:
搜索
您可以搜索所有记录,也可以专门搜索资产/介质。两者的语法非常相似。在
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())
- 项目
标签: