我有一个.csv文件,其中包含大约100个指向dropbox文件的链接。我目前的方法是下载缺少?dl=0
扩展名的文件,这似乎很关键
#import packages
import pandas as pd
import wget
#read the .csv file, iterate through each row and download it
data = pd.read_csv("BRAIN_IMAGING_SUMSTATS.csv")
for index, row in data.iterrows():
print(row['Links'])
filename = row['Links']
wget.download(filename)
输出:
https://www.dropbox.com/s/xjtu071g7o6gimg/metal_roi_volume_dec12_2018_pheno1.txt.zip?dl=0
https://www.dropbox.com/s/9oc9j8zhd4mn113/metal_roi_volume_dec12_2018_pheno2.txt.zip?dl=0
https://www.dropbox.com/s/0jkdrb76i7rixa5/metal_roi_volume_dec12_2018_pheno3.txt.zip?dl=0
https://www.dropbox.com/s/gu5p46bakgvozs5/metal_roi_volume_dec12_2018_pheno4.txt.zip?dl=0
https://www.dropbox.com/s/8zfpfscp8kdwu3h/metal_roi_volume_dec12_2018_pheno5.txt.zip?dl=0
这些链接看起来是正确的,但下载文件的格式如下
metal_roi_volume_dec12_2018_pheno1.txt.zip
而不是metal_roi_volume_dec12_2018_pheno1.txt.zip?dl=0
,所以我不能解压缩它们。有没有办法下载实际的dropbox文件?
发布于 2020-01-24 04:42:07
默认情况下(没有额外的URL参数,或者使用示例中的dl=0
),Dropbox共享链接指向链接文件的超文本标记语言预览页面,而不是文件数据本身。按原样编写的代码将下载HTML,而不是实际的zip文件数据。
但是,您可以修改这些链接以直接访问文件,如this Dropbox help center article中所述。
因此,在对链接调用wget.download
之前,您应该修改链接,例如,使用raw=1
而不是dl=0
。
发布于 2020-01-24 04:45:50
快速修复方法类似于:
#import packages
import pandas as pd
import wget
import os
from urllib.parse import urlparse
#read the .csv file, iterate through each row and download it
data = pd.read_csv("BRAIN_IMAGING_SUMSTATS.csv")
for index, row in data.iterrows():
print(row['Links'])
filename = row['Links']
parsed = urlparse(filename)
fname = os.path.basename(parsed.path)
wget.download(filename, fname)
基本上,您从URL中提取文件名,然后使用该文件名作为wget.download fn中的输出参数。
https://stackoverflow.com/questions/59886479
复制相似问题