You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过DOI从FigShare获取出版物的全部关联文件下载链接?

解决FigShare集合类DOI的批量文件URL获取问题

针对你提到的埃及果蝠发声数据集(DOI对应FigShare集合),核心问题是调用了错误的API端点——这个DOI指向的是FigShare集合(Collection),而非单篇文章(Article)或单个文件(File),所以需要用集合相关的API接口来处理:

步骤1:解析DOI中的集合ID

你的DOI 10.6084/m9.figshare.c.3666502.v2 里的 c.3666502 表示这是一个集合,核心ID是 3666502。

步骤2:调用集合API获取所有子条目

使用FigShare的集合详情接口获取该集合下的所有子集合/文章:

import requests

# 集合ID
collection_id = 3666502
base_url = "https://api.figshare.com/v2"

# 获取集合基本信息及子条目
response = requests.get(f"{base_url}/collections/{collection_id}")
collection_data = response.json()

# 提取所有子文章ID(集合里的每个item都是一篇article)
article_ids = [item['id'] for item in collection_data['items']]

步骤3:遍历子文章,提取所有文件下载URL

每个子条目都是一篇FigShare文章,调用文章详情接口获取该文章下的所有文件信息,从中提取下载URL:

all_file_urls = []

for article_id in article_ids:
    # 获取文章详情
    article_response = requests.get(f"{base_url}/articles/{article_id}")
    article_data = article_response.json()
    
    # 提取该文章下所有文件的下载URL
    file_urls = [file['download_url'] for file in article_data['files']]
    all_file_urls.extend(file_urls)

# 打印所有URL(或保存到文件)
for url in all_file_urls:
    print(url)

注意事项

  • 分页处理:如果集合里的子条目超过100个(FigShare API默认分页大小),需要添加分页参数,比如:requests.get(f"{base_url}/collections/{collection_id}?page=2&page_size=100")
  • 权限验证:如果数据集是私有,需要在请求头里添加认证token:headers = {'Authorization': 'Token YOUR_TOKEN'},公开数据集无需此步骤
  • API版本:确保使用v2版本的FigShare API,旧版本接口结构不同

内容的提问来源于stack exchange,提问作者user305883

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 12:10:23