Python 批量下载文件
前言
前段时间站长在对本站图片(托管在阿里云 OSS)进行迁移(目的是从内地迁移到香港,可以绑定未备案域名),发现 OSS 控制太功能尚少,不支持直接迁移的操作,所以就得全部下载到本地,然后再批量上传。
下载和上传的操作此处不赘述(如有需要请评论或邮箱联系),本文主要讲讲利用 Python 批量下载。
实操
环境准备
Windows 7+ 系统计算机 x1
安装 Python 3+
安装 requests 库
准备链接
本文的操作对象访问速度较快,所以暂不考虑异步等高级下载方式。
首先,你需要准备创建一个文件夹(避免导致原本混乱的桌面或者盘符根目录更混乱),在里面创建一个文本文档,并在里面存储所有需要下载的文件的直链(需要可访问,并且无『无 referer 防盗』,也就是说可以直接通过浏览器打开)。
就像这样:
你放心,这些链接我不怕被刷,因为已经迁移好并删除了。
现在你访问这张图片里的链接,在返回的信息中大概率只会看到一句人话:The specified bucket does not exist.
编写程序
这里就不细讲了,直接看代码:
import requests
# Set a headers
# It's necessary if you have set anti-stealing-link
headers = {"referer": "https://www.gkcoll.xyz"}
def download(url: str) -> str:
'''
Function: Get binary data from income url then write into a file.
:param url: operation target.
'''
filename = url.split("/")[-1]
r = requests.get(url, headers=headers)
with open(filename, "wb") as f:
f.write(r.content)
return filename
def read_url() -> list:
'''
Function: Read urls in the text file which stored urls.
'''
with open("links.txt" ,"r") as f:
content = f.read()
return content.split("\n").remove("")
def main():
links = read_url()
for url in links:
print("Finish!", download(url), f"[{links.index(url)+1}/{len(links)}]")
if __name__ == "__main__":
main()
把它保存在刚创建的文件夹里。
运行
把 links.txt
替换成你存放链接的文件名(包括后缀名),运行它,你大概率会看到以下结果:
Finish! xxxx.png 1/20
Finish! xxxx.png 2/20
Finish! xxxx.pptx 3/20
Finish! xxxx.docx 4/20
Finish! xxxx.txt 5/20
并且,所有的文件都会被保存到该程序所在目录
注意:
此程序并不是完美的,而且没有容错机制,可能导致中途出错而整个程序无法继续运行。
如有需要可以试试在
main
函数中添加try-except
语句。
END
阅读剩余
版权声明:
作者:灰尘疾客
链接:https://www.gkcoll.xyz/540.html
文章版权归作者所有,未经允许请勿转载。
THE END