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

使用Python Requests下载网站临时文件返回500错误的解决方法

解决requests请求ready.asp返回500错误的方法

出现500错误的核心原因是:你直接请求的ready.asp链接依赖会话状态和前置操作生成的临时文件,服务器无法识别孤立的请求。以下是具体解决步骤:

关键要点

  • 服务器的临时文件(pxfile/outfile参数里的本地路径)与用户会话绑定,必须用同一个会话完成从初始页面到下载的所有操作。
  • 不能跳过页面交互步骤直接请求ready.asp,需要先模拟用户选择表格、提交下载请求的过程。
  • 必须模拟浏览器的请求头,避免被服务器拦截。

具体实现代码

import requests

# 初始化会话,保持cookie和请求状态
session = requests.Session()
# 模拟浏览器UA,避免被识别为爬虫
session.headers.update({
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36'
})

# 1. 先访问初始页面,建立会话,获取必要的cookie
initial_url = 'https://statistikbanken.dk/statbank5a/default.asp?w=1448'
session.get(initial_url)

# 2. 模拟提交表格选择的表单(参数需从浏览器开发者工具获取)
# 打开浏览器F12,在你点击下载时查看"网络"标签里的POST请求,复制Form Data
submit_url = 'https://statistikbanken.dk/statbank5a/selectout/select.asp'
form_data = {
    'PLanguage': '0',
    'table': 'BIL5',
    # 补充其他必要参数,比如你选择的时间范围、分类等,从浏览器Form Data里复制
    'variable1': 'value1',
    'variable2': 'value2'
}
# 提交表单,触发服务器生成临时文件
response = session.post(submit_url, data=form_data)

# 3. 请求ready.asp获取文件(此时会话已绑定临时文件,无需复用旧的pxfile参数)
# 注意:这里的ready.asp链接可以从步骤2的响应跳转或页面内容中提取,或者用通用构造
ready_url = 'https://statistikbanken.dk/statbank5a/selectout/ready.asp?PLanguage=0&Pxsid='
response = session.get(ready_url)

# 检查响应状态,保存文件
if response.status_code == 200:
    with open('downloaded_file.csv', 'wb') as f:
        f.write(response.content)
else:
    print(f"请求失败,状态码:{response.status_code}")

额外排查步骤

  1. 确认请求方法:查看浏览器中ready.asp的请求是GET还是POST,代码中保持一致。
  2. 添加Referer头:如果服务器校验来源,在请求ready.asp前添加:
    session.headers.update({'Referer': initial_url})
    
  3. 提取动态参数:如果ready.asp的链接是动态生成的,可以从步骤2的响应HTML中用正则表达式提取,比如:
    import re
    ready_link = re.search(r'href="(selectout/ready.asp\?.*?)"', response.text).group(1)
    full_ready_url = f'https://statistikbanken.dk/statbank5a/{ready_link}'
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 22:33:34