You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python使用requests登录网站下载zip包提示压缩包无效如何解决

故障原因与修复方案

你遇到的压缩包无效报错,本质是请求下载地址时没有携带登录凭证,站点返回的不是真实压缩包内容,核心问题和修复方案如下:

  • 会话复用错误
    你创建了requests.Session()对象维护登录态,但下载文件时调用了独立的requests.get()方法,该方法不会携带之前会话存储的登录Cookie,相当于匿名访问,因此无法获取到有效文件。需要改为使用已登录的会话发起下载请求:r = s.get(file_url)
  • 大文件下载适配
    体积较大的文件直接全量读取响应内容容易出现请求中断、内存溢出的问题,建议开启流式传输模式,分块写入本地文件,避免内容截断。
  • 额外注意事项
    1. 先验证登录是否生效:打印登录请求的响应状态码、页面内容,确认参数名是否和站点要求一致,避免因登录参数错误、缺少CSRF令牌等问题导致登录本身失败
    2. Windows路径转义:本地存储路径中的\为Python转义字符,要么改为双反斜杠\\,要么使用原始字符串(路径前加r)避免路径解析错误
    3. 增加响应校验:下载请求发起后先判断状态码是否为200,再写入文件,避免把错误页内容写入压缩包

修正后可运行代码

import requests

# 配置参数
site_url = 'https://rdw.sandag.org/Account/Login'
userid = 'xxxx@xxxxxx.org'
password = 'xxxxxxxxx'
file_url = 'https://rdw.sandag.org/Account/GetFSFile.aspx?dir=Transportation&Name=Roads_All.zip'
# 原始字符串避免路径转义问题
local_save_path = r"C:\Folder\Roads_All.zip"

# 初始化会话,添加UA模拟浏览器避免被反爬拦截
s = requests.Session()
s.headers.update({
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36"
})

# 访问登录页获取初始Cookie
s.get(site_url)
# 提交登录请求,可根据站点实际参数调整提交字段
login_response = s.post(site_url, data={'_username': userid, '_password': password})
# 此处可自行增加登录校验逻辑,例如判断跳转地址、响应内容是否包含登录成功标识

# 复用已登录会话下载文件,开启流式传输
download_response = s.get(file_url, stream=True)

if download_response.status_code == 200:
    with open(local_save_path, "wb") as zip_file:
        # 每次写入1MB内容,适配大文件下载
        for chunk in download_response.iter_content(chunk_size=1024 * 1024):
            if chunk:
                zip_file.write(chunk)
else:
    print(f"下载请求失败,状态码:{download_response.status_code}")

内容的提问来源于stack exchange,提问作者user16707867

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 13:18:02