从FTP链接下载ZIP文件失败:requests包无法下载,求简便方法
解决FTP链接用requests下载失败的简便方法
哦,这个问题我可太熟了!requests库对FTP链接的支持确实有点拉胯,哪怕是不需要登录的匿名FTP也容易掉链子。给你几个超简便的解决办法,选一个顺手的用就行:
方法1:用Python自带的urllib.request(最稳妥)
Python标准库的urllib.request对FTP的支持比requests靠谱多了,几行代码就能搞定下载:
import urllib.request url = 'ftp://ftp.ibge.gov.br/Precos_Indices_de_Precos_ao_Consumidor/IPCA/Serie_Historica/ipca_SerieHist.zip' # 第一个参数是FTP链接,第二个是要保存的本地文件名 urllib.request.urlretrieve(url, 'ipca_SerieHist.zip')
这个函数会直接帮你处理好FTP的匿名登录,不用额外配置,下载完直接存到指定文件里,省心得很。
方法2:给requests加上匿名FTP认证
如果你非要用requests,那得显式加上匿名FTP的认证信息(FTP协议里匿名登录默认用anonymous当用户名,空密码或者随便填个邮箱都行):
import requests url = 'ftp://ftp.ibge.gov.br/Precos_Indices_de_Precos_ao_Consumidor/IPCA/Serie_Historica/ipca_SerieHist.zip' # 传入匿名认证参数 response = requests.get(url, auth=('anonymous', '')) # 将响应内容写入本地文件 with open('ipca_SerieHist.zip', 'wb') as f: f.write(response.content)
不过这个方法偶尔会因为某些FTP服务器对requests的请求头不兼容而失败,所以还是优先考虑方法1。
方法3:直接用终端命令(最省事)
如果你的系统里装了wget(Linux/macOS默认就有,Windows可以装Git Bash或者单独安装wget),直接在终端敲一行命令就能下载,连Python代码都不用写:
wget ftp://ftp.ibge.gov.br/Precos_Indices_de_Precos_ao_Consumidor/IPCA/Serie_Historica/ipca_SerieHist.zip
要是习惯用curl也可以:
curl -O ftp://ftp.ibge.gov.br/Precos_Indices_de_Precos_ao_Consumidor/IPCA/Serie_Historica/ipca_SerieHist.zip
-O参数表示保留原文件名下载。
内容的提问来源于stack exchange,提问作者frysauce
相关产品推荐
相关产品推荐

