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

Python发送POST请求获取ASPX页面表单数据缺失生成表格问题

解决ASP.NET页面POST请求无法获取生成表格的问题

这个页面基于ASP.NET Web Forms架构,表单提交必须携带页面动态生成的隐藏参数,仅传递cboFecProceso无法通过服务器验证,所以拿不到目标表格。这些隐藏参数(如__VIEWSTATE、__VIEWSTATEGENERATOR、__EVENTVALIDATION、__EVENTTARGET等)每次页面加载都会变化,必须先获取当前页面的这些参数再一起提交。

修正后的代码实现

先发送GET请求获取页面中的隐藏参数,再将这些参数与目标参数一同提交:

import requests
from bs4 import BeautifulSoup

URL = "https://www.sbs.gob.pe/app/pu/ccid/paginas/vp_rentafija.aspx"
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36'
}

with requests.Session() as session:
    # 1. 发送GET请求,获取页面动态生成的隐藏参数
    get_response = session.get(URL, headers=headers)
    soup = BeautifulSoup(get_response.text, 'html.parser')
    
    # 提取所有需要的隐藏参数
    payload = {}
    for input_tag in soup.find_all('input', type='hidden'):
        if input_tag.get('name'):
            payload[input_tag['name']] = input_tag.get('value', '')
    
    # 设置目标参数
    payload['cboFecProceso'] = "12/10/2022"
    
    # 2. 携带所有参数发送POST请求
    post_response = session.post(URL, headers=headers, data=payload)
    
    # 返回的HTML中应包含生成的表格
    print(post_response.text)

关键注意事项

  • 必须使用同一个requests.Session()对象,保持会话的Cookie和状态一致
  • 若提交时__EVENTTARGET需要指定值(比如触发下拉框事件),可根据开发者工具中实际请求的参数值调整
  • 隐藏参数的名称可能随页面更新变动,需以页面实际的input标签属性为准

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 02:20:33