使用pyinaturalist获取iNaturalist项目类群列表相关问题咨询
问题1:HTTP 414报错原因与解决
你报错的核心原因是get_taxa()的传参方式错误,你把完整的观测字典直接传入该函数,库会将整个字典序列化后拼接到GET请求的URL参数中,最终导致URL长度超出服务器限制触发414错误。
实际上get_observations()返回的每条观测结果默认已经包含了对应的类群信息,不需要额外调用get_taxa()接口查询。
问题2:调整默认返回30条的限制
pyinaturalist的观测查询接口默认单页返回30条结果,你可以通过两个方式调整:
- 单页查询不超过200条时,添加
per_page参数设置单页返回数量,最大值为200,示例:get_observations(project_id = "bad-durkheim-exkursion", per_page=200) - 项目观测总数超过200时,直接使用
get_all_observations()函数,会自动处理分页拉取所有符合条件的观测,不需要手动翻页。
问题3:TypeError: 'NoneType' object is not subscriptable报错解决
这个错误是因为部分观测还没有完成类群识别,obs["taxon"]的值为None,你直接尝试对None取下标["name"]就会触发报错,添加判断过滤掉无类群信息的观测即可。
可直接运行的完整代码示例
from pyinaturalist import get_all_observations # 拉取项目下所有观测 all_obs = get_all_observations(project_id="bad-durkheim-exkursion") # 过滤无类群信息的观测后提取物种名 species_list = [obs["taxon"]["name"] for obs in all_obs["results"] if obs.get("taxon")] # 去重获取唯一的现存类群列表 unique_species = list(set(species_list))
如果需要保留类群的阶元、学名等其他信息,可以提取完整的taxon字典而不是仅取name字段。
内容的提问来源于stack exchange,提问作者Manuel Popp
相关产品推荐
相关产品推荐

