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

Python请求提交至ASP.Net表单服务无数据返回问题排查

解决Ofgem报表页面爬取问题的关键配置
  • 必须提取ReportViewer专属参数
    这个页面依赖Microsoft Report Viewer控件,除了你复制的表单数据,还要从首次GET请求的页面HTML里提取以下参数,合并到POST请求中:

    • __VIEWSTATE、__VIEWSTATEGENERATOR、__EVENTVALIDATION:ASP.NET表单必备的验证参数
    • ReportViewer1$ctl00$HiddenID、ReportViewer1$ClientState:ReportViewer控件的状态标识
    • __EVENTTARGET、__EVENTARGUMENT:触发报表刷新的目标控件标识(可从浏览器提交的Form Data里找到对应值)
  • 严格遵循请求流程

    1. 先发送GET请求访问目标页面,保存响应中的Cookie(包括ASP.NET_SessionId),同时用BeautifulSoup解析页面,提取上面提到的所有隐藏参数和表单选项值
    2. 构造POST请求时,把提取到的参数和你复制的表单数据(注意参数名要和浏览器提交的完全一致,比如可能是ReportViewer1$ctl00$ctl04$ctl00$DropDownList而不是单纯的Scheme)合并,再发送请求
  • 修正请求头配置

    • 确保Content-Type设为application/x-www-form-urlencoded
    • 添加Referer头,值为https://renewablesandchp.ofgem.gov.uk/Public/ReportViewer.aspx
    • 设置真实的User-Agent字符串,模拟主流浏览器请求
  • 解决表单验证错误
    提示‘Scheme参数不能为空’是因为你提交的参数名或值不匹配:

    • 对比浏览器开发者工具中Form Data里的Scheme对应参数名,确认是否带有ReportViewer控件的前缀
    • 从初始页面的下拉框中提取合法的选项值,不要手动输入无效内容
  • 关于Handler未注册的提示
    这个提示是服务器返回的错误反馈,并非真的服务器配置问题,只要你的请求参数和流程完全模拟浏览器的合法请求,这个提示会自动消失。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 12:04:57