直接下载 zip 文件而不提取 link

Download zip file without extraction from direct link

我正在尝试制作一个脚本,使用 [=24= 从直接 links(例如这个:“http://beatsaver.com/api/download/key/f55c”)下载文件] 脚本。 我已经尝试了来自这里或/其他网站的各种代码,要么以损坏的 zip 文件结束,要么

"zipfile.BadZipFile: File is not a zip file".

我试过这个:(zip 损坏)

url = "http://beatsaver.com/api/download/key/f55c"
resp = requests.get(url)
zname = os.path.join('BeatSong', "song_test.zip")
zfile = open(zname, 'wb')
zfile.write(resp.content)
zfile.close()

或此的 3 或 4 个变体 :( raise : "zipfile.BadZipFile: 文件不是 zip 文件")

url = "http://beatsaver.com/api/download/key/f55c"
resp = requests.get(url)
zip = zipfile.ZipFile(io.BytesIO(resp.content))
zip.extractall("/BeatSong")

link 加载时自动下载 zip 有什么方法可以恢复 zip 文件,就像我从浏览器下载它一样?

首先,url 在尝试使用 python 获取它时返回 403 禁止错误。该网站拒绝向您发送文件,因为它知道您是机器人。我能够通过设置 user-agent.

来解决这个问题
import urllib.request

url = "http://beatsaver.com/api/download/key/f55c"

#add headers so you don't get a 403 error
opener = urllib.request.build_opener()
opener.addheaders = [('user-agent', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36')]
urllib.request.install_opener(opener)

urllib.request.urlretrieve(url, 'song.zip', )