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

如何用requests抓取ASPX页面?提交按钮及VIEWSTATE问题

抓取ASPX页面数据的解决方案

一、找到提交按钮名称的正确方法

你当前的按钮字段为空,是因为ASPX的提交按钮名称不会直接在动态DOM里暴露,或者你没找对位置。可以通过两种方式获取:

  • 查看页面原始源码:右键页面→查看页面源代码,搜索关键词Consultar,找到对应的提交按钮元素,比如<input type="submit" name="btnConsultar" value="Consultar" />,这里的btnConsultar就是按钮的name属性,POST时要写成'btnConsultar': 'Consultar'。
  • 监控网络请求:打开浏览器开发者工具(F12)→切换到Network标签,手动点击页面上的"Consultar"按钮,找到POST请求后查看Form Data部分,里面会列出所有提交的参数,包括按钮的name和value。

二、ASPX页面必须处理的隐藏参数

ASPX页面依赖服务器生成的几个核心隐藏字段,只靠基础POST请求必然失败,必须先GET页面获取这些参数再一起提交:

  • __VIEWSTATE:页面状态标识
  • __VIEWSTATEGENERATOR:状态生成器标识
  • __EVENTVALIDATION:事件验证标识

三、修正后的代码示例

用requests+BeautifulSoup实现完整抓取流程:

import csv
import requests
from bs4 import BeautifulSoup

# 用Session保持会话,维持ASPX所需的状态
session = requests.Session()
target_url = 'http://clima.edu.ar/InformePorPeriodo.aspx'

# 第一步:GET页面,提取隐藏参数
get_response = session.get(target_url)
soup = BeautifulSoup(get_response.text, 'html.parser')

viewstate = soup.find('input', {'name': '__VIEWSTATE'})['value']
viewstategenerator = soup.find('input', {'name': '__VIEWSTATEGENERATOR'})['value']
eventvalidation = soup.find('input', {'name': '__EVENTVALIDATION'})['value']

# 第二步:构造完整表单数据,包含隐藏参数和业务参数
form_data = {
    '__VIEWSTATE': viewstate,
    '__VIEWSTATEGENERATOR': viewstategenerator,
    '__EVENTVALIDATION': eventvalidation,
    'CalendarioDesde': '01/11/2022',
    'CalendarioHasta': '28/12/2022',
    'IdEstacion': 'Aeropuerto San Luis (REM)',
    'btnConsultar': 'Consultar'  # 替换为你找到的按钮name属性值
}

# 第三步:提交POST请求
post_response = session.post(target_url, data=form_data)

# 处理CSV格式的响应
csv_reader = csv.reader(post_response.text.splitlines())
for row in csv_reader:
    print(row)

四、关键注意事项

  • 必须用Session对象保持会话,ASPX会依赖Cookie维持状态一致性。
  • 隐藏字段每次请求可能更新,所以每次POST前都要重新GET页面获取最新值。
  • 如果页面还有其他动态参数(比如__EVENTTARGET),同样需要从GET的页面源码中提取并加入表单数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 22:15:27