在GEO网站上直接点击下载数据时,可能会遇到下载中断或速度过慢的问题,此时可以尝试以下几种替代方法来获取数据。

1.GEOquery下载

经典GEOquery包,把timeout设置长一点

options(timeout = 6000000)  # 时间设置长一点
library(GEOquery) 
# 指定数据集的 accession number
accession_number <- "GSE277066"
getGEOSuppFiles(
  accession_number, # 
  makeDirectory = TRUE,
  baseDir = getwd(),
  fetch_files = TRUE,
  filter_regex = NULL
) 

getGEOSuppFiles(accession_number)
trying URL 'https://ftp.ncbi.nlm.nih.gov/geo/series/GSE277nnn/GSE277066/suppl//GSE277066_RAW.tar?tool=geoquery'
Content type 'application/x-tar' length 316456960 bytes (301.8 MB)

从这个URL(统一资源定位符,链接)可以看出,只要去掉末尾的 /GSE277066_RAW.tar?tool=geoquery 部分,就能得到该数据集的基础下载路径(https://ftp.ncbi.nlm.nih.gov/geo/series/GSE277nnn/GSE277066/suppl/)。通过这种方式,我们可以手动构建或获取 GEO 数据的下载链接。

2.curl下载文件

curl下载工具一般电脑会自带

curl -C - -O https://ftp.ncbi.nlm.nih.gov/geo/series/GSE242nnn/GSE242469/suppl/GSE242469_RAW.tar

nohup curl -C - -O https://ftp.ncbi.nlm.nih.gov/geo/series/GSE242nnn/GSE242469/suppl/GSE242469_RAW.tar > curl.log 2>&1 &

# 之后可以用
tail curl.log查看内容
  1. curl:命令行下载工具。

  2. -C -断点续传选项,意思是:如果之前下载了一部分文件,继续从断点处开始下载,避免重新下载已完成部分。

  3. -O:表示用远程文件名保存到本地

3.wget下载文件

安装wget

brew install wget

替换后面的下载链接,由于wget有递归下载功能,因此其可以抓取整个目录下所有链接的文件,也就是说其不需要指定特定文件夹,非常适合用于数据集中存在很多单独的文件。

wget -r -np -k -p -e robots=off https://ftp.ncbi.nlm.nih.gov/geo/series/GSE240nnn/GSE240839/suppl/

nohup wget -r -np -k -p -e robots=off https://ftp.ncbi.nlm.nih.gov/geo/series/GSE240nnn/GSE240839/suppl/ > wget.log 2>&1 &

# 之后可以用
tail wget.log查看内容
  1. wget:命令行下载工具。

  2. -r (--recursive):递归下载,不仅下载指定页面,还下载页面链接的内容。

  3. -np (--no-parent):不下载父目录的内容,限制递归只在指定目录及其子目录内,不会往上层目录爬取。

  4. -k (--convert-links):下载后转换页面中的链接,使得下载后的网页中链接指向本地文件,方便离线浏览。

  5. -p (--page-requisites):下载页面显示所需的所有资源,如图片、CSS、脚本等,确保页面完整显示。

  6. -e robots=off:忽略网站的 robots.txt 限制,强制爬取即使网站禁止机器人抓取的内容。 下载速度感觉挺慢的。

4.axel下载文件

安装axel

brew install axel

axel的优势在于其可以进行多线程下载,-n 20

axel -n 20 https://ftp.ncbi.nlm.nih.gov/geo/series/GSE271nnn/GSE271243/suppl/GSE271243_RAW.tar


nohup axel -n 20 https://ftp.ncbi.nlm.nih.gov/geo/series/GSE271nnn/GSE271243/suppl/GSE271243_RAW.tar > axel.log 2>&1 &
  1. axel:一个轻量级的多线程命令行下载工具,可以加快下载速度。

  2. -n 20:使用 20 个连接(线程) 并行下载这个文件。

参考资料:
  1. Linuxtools:https://linuxtools-rst.readthedocs.io/zh-cn/latest/index.html

  2. GEOquery:https://www.bioconductor.org/packages/release/bioc/html/GEOquery.html

  3. curl: https://github.com/curl/curl

  4. wget:https://linuxtools-rst.readthedocs.io/zh-cn/latest/tool/wget.html

  5. axel:https://github.com/axel-download-accelerator/axel

  6. 生信技能树:https://mp.weixin.qq.com/s/uEso7yRZB300MnMhSpXH_Q

:若对内容有疑惑或者有发现明确错误的朋友,请联系后台(欢迎交流)。更多相关内容可关注公众号:生信方舟

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐