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

Python下载PDF链接遇302状态码,求助排查操作错误

问题分析与解决方案

你的核心问题有两个:

  1. 错误处理302重定向:设置allow_redirects=False后,你直接使用了原请求的响应内容(r.content),但此时这个响应只是302重定向的跳转提示,并非目标PDF文件。浏览器能正常打开是因为它会自动跟进302的跳转地址,而你的代码没有做这一步。
  2. Windows路径转义问题:你的文件路径C:\Users\piolv\Desktop\pdf_folder\work_file.PDF里的\U、\p会被Python解析为转义字符,导致路径识别错误。

修正方案

方案1:让requests自动跟进重定向(最简单)

直接移除allow_redirects=False参数,requests默认会自动处理302重定向,同时修复路径问题:

import requests

url = 'https://unistream.ru/upload/iblock/230/230283e15180d590198137eba4e70644.PDF'
# 移除allow_redirects=False,默认自动跟进重定向
r = requests.get(url)  
# 使用原始字符串避免转义问题,或者把反斜杠换成双反斜杠
with open(r'C:\Users\piolv\Desktop\pdf_folder\work_file.PDF', 'wb') as f:
    f.write(r.content)

方案2:手动处理重定向(适合需要自定义跳转逻辑的场景)

如果必须手动控制重定向流程,需要从302响应的Location头中获取跳转URL,再发起新请求:

import requests

url = 'https://unistream.ru/upload/iblock/230/230283e15180d590198137eba4e70644.PDF'
# 禁止自动重定向,拿到302响应
r = requests.get(url, allow_redirects=False)  
# 从响应头中提取重定向目标URL
redirect_url = r.headers.get('Location')
# 请求跳转后的URL
pdf_r = requests.get(redirect_url)
# 修复路径后写入文件
with open(r'C:\Users\piolv\Desktop\pdf_folder\work_file.PDF', 'wb') as f:
    f.write(pdf_r.content)

补充说明

若遇到跳转后仍无法获取内容,可能需要添加请求头模拟浏览器(比如User-Agent),有些网站会拦截非浏览器请求:

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'
}
r = requests.get(url, headers=headers)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 23:10:27