首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >单细胞数据:Figshare数据库的国内下载方案

单细胞数据:Figshare数据库的国内下载方案

作者头像
医小北同学
发布2026-02-03 15:31:15
发布2026-02-03 15:31:15
670
举报

今天在下载 Figshare 数据库的数据时,遇到了一些问题:国内下载速度极慢且频繁断线,超过 100MB 的文件即使挂梯子也很难成功下载。为此,我查阅了一些教程,发现使用 Google Cloud 结合 Google Colab 的方案非常可行。不过在实际操作中,我又遇到了新的问题。经过调整和测试,生成一套可行的下载方案,在此记录并分享给大家。

整体思路是,通过Google Colab在线执行功能,将figshare数据转存至Google云盘,再下载。 主要流程是:

  1. 1)关联Colab与Google云盘;
  2. 2)在Colab中下载figshare数据,并转存至Google云盘;
  3. 3)Google云盘网页端下载。

1、在谷歌云盘,按照图示操作,打开Google Colab并做关联。
2、进入Google Colab,挂载云盘路径。
代码语言:javascript
复制
from google.colab import drive
drive.mount('/content/drive')```

3、从figshare复制下载链接,在Google Colab运行下载代码
代码语言:javascript
复制
import requests
import os
from tqdm import tqdm

# 创建会话(模拟真实浏览器)
session = requests.Session()
session.headers.update({
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
    'Accept-Language': 'en-US,en;q=0.5',
    'Referer': 'https://figshare.com/'
})

figshare_url = "xxxxxx替换自己的下载链接"

# 保存路径(自定义)
save_dir = "/content/drive/MyDrive/Figshare/UCE"
os.makedirs(save_dir, exist_ok=True)
save_path = os.path.join(save_dir, "文件名.rds")

print("开始下载...")
print(f"目标: {save_path}\n")

try:
    # 关键:让 requests 自动跟随所有重定向
    with session.get(
        figshare_url, 
        stream=True, 
        allow_redirects=True,  # 自动跟随重定向
        timeout=120
    ) as response:
        
        response.raise_for_status()
        
        # 显示最终 URL
        print(f"最终 URL: {response.url[:100]}...")
        
        # 获取文件信息
        total_size = int(response.headers.get('content-length', 0))
        content_type = response.headers.get('content-type', 'unknown')
        
        print(f"Content-Type: {content_type}")
        print(f"大小: {total_size / (1024*1024):.2f} MB\n")
        
        # 如果返回 HTML 且很小,说明不是真实文件
        if'html'in content_type.lower() and total_size < 50000:
            print("❌ 返回的是网页,不是文件")
            print(f"内容预览:\n{response.text[:300]}")
            raise Exception("未获取到文件下载链接")
        
        # 开始下载
        print("正在下载...")
        with open(save_path, 'wb') as f, tqdm(
            total=total_size,
            unit='iB',
            unit_scale=True,
            unit_divisor=1024
        ) as bar:
            for chunk in response.iter_content(chunk_size=32768):
                if chunk:
                    f.write(chunk)
                    bar.update(len(chunk))
    
    # 验证
    actual_size = os.path.getsize(save_path)
    print(f"\n{'='*60}")
    if actual_size > 100000:
        print(f"✅ 成功!文件大小: {actual_size/(1024*1024):.2f} MB")
    else:
        print(f"❌ 失败!文件只有 {actual_size} 字节")
    print(f"位置: {save_path}")
    print(f"{'='*60}")
    
except Exception as e:
    print(f"\n❌ 错误: {e}")

# 查看结果
!ls -lh /content/drive/MyDrive/Figshare/UCE/

运行完成结果如下:

4、进入自己关联的谷歌云盘进行数据下载,现在可以看到下载速度就非常非常快了。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-02-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 医小北 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、在谷歌云盘,按照图示操作,打开Google Colab并做关联。
  • 2、进入Google Colab,挂载云盘路径。
  • 3、从figshare复制下载链接,在Google Colab运行下载代码
  • 4、进入自己关联的谷歌云盘进行数据下载,现在可以看到下载速度就非常非常快了。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档