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

使用request.urlretrieve时出现404 Not Found问题的排查与解决

问题:提取URL后使用urlretrieve下载报404,但手动赋值或浏览器可正常访问

从外部服务发送POST请求获取响应后,提取响应中的URL并通过urllib.request.urlretrieve下载文件时,出现404 Not Found错误;但手动复制该URL并直接赋值给变量后,urlretrieve可正常下载,将提取的URL复制到浏览器中也能正常访问。

代码示例

方法1 - 报错

response = requests.post(url, json=payload, headers=headers)
# 提取格式类似'https://my_provide_name.com/csv_exports/5704d5.csv.gz'的链接
url = response.text[17:-2] 
urlrtv = urllib.request.urlretrieve(url=url, filename='C:\Users\UserName\Downloads\test4.csv.gz')

返回错误: HTTP Error 404 Not Found

方法2 - 正常运行

response = requests.post(url, json=payload, headers=headers)
url2 = 'https://my_provide_name.com/csv_exports/5704d5.csv.gz'
urlrtv=urllib.request.urlretrieve(url=url2, filename='C:\Users\UserName\Downloads\test4.csv.gz')

正常运行

补充尝试

改用json.loads解析响应提取URL,结果仍然报错:

a = json.loads(response.text) 
# 输出: {'csv_file_url': 'https://service_name.com/csv_exports/746d6.csv.gz'}
url = a['csv_file_url']
print(url)
# 输出: https://service_name.com/csv_exports/746d6.csv.gz

解决方法

在下载文件前添加time.sleep(3)延迟,即可正常运行:

url = response.json()['csv_file_url']
time.sleep(3)
urlrtv = urllib.request.urlretrieve(url=url, filename=f'{storage_path}{filename}')

内容的提问来源于stack exchange,提问作者MR.Max

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 16:40:19