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

Python POST请求提交指定日期后响应仍返回默认当前日期问题求助

问题排查与解决方案

我来帮你分析下为什么提交的日期没生效,主要有两个核心问题:

1. 表单数据格式错误

你在请求头里设置了Content-Type: application/x-www-form-urlencoded,但实际发送的是用json.dumps()转换后的JSON字符串——服务器期望的是标准的表单编码数据,自然无法正确解析你提交的日期参数,只能返回默认的当前日期。

修正方法:直接把字典aaa传给data参数,requests库会自动帮你编码成符合要求的表单格式:

# 错误写法
r = requests.post(url, data= json.dumps(aaa), headers = bbb)

# 正确写法
r = requests.post(url, data=aaa, headers=bbb)

2. 硬编码的javax.faces.ViewState已失效

JSF(JavaServer Faces)页面的javax.faces.ViewState是动态生成的,每次会话或页面刷新都会变化。你代码里硬编码的这个值大概率已经过期,服务器会判定你的请求无效,直接返回默认数据。

正确做法:先发送GET请求获取目标页面,从页面中提取最新的ViewState和其他动态生成的表单字段(比如j_idt202这类ID),再构造提交的表单数据。

完整修正示例代码

这里用BeautifulSoup来解析页面提取必要参数,记得先安装依赖:pip install beautifulsoup4

import requests
from bs4 import BeautifulSoup

url = "https://seffaflik.epias.com.tr/transparency/piyasalar/gop/ptf.xhtml"

# 初始化会话,自动管理Cookie
session = requests.Session()
session.headers.update({
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36"
})

# 第一步:GET页面获取ViewState和表单字段
response = session.get(url)
soup = BeautifulSoup(response.text, "html.parser")

# 提取ViewState
view_state = soup.find("input", {"name": "javax.faces.ViewState"}).get("value")
# 提取表单的核心ID(比如j_idt202,可能会动态变化)
form_id = soup.find("form", {"id": "j_idt202"}).get("id")

# 构造表单数据
form_data = {
    form_id: form_id,
    f"{form_id}:date1_input": "15.04.2020",
    f"{form_id}:date2_input": "17.04.2020",
    f"{form_id}:goster": "",
    f"{form_id}:dt_rppDD": "24",
    "javax.faces.ViewState": view_state
}

# 第二步:POST提交表单
post_response = session.post(url, data=form_data)
print(post_response.text)

额外提醒

  • 确保日期格式和页面输入框要求一致(你用的dd.MM.yyyy是正确的,和页面显示格式匹配)
  • 尽量用requests.Session管理会话,避免手动维护Cookie导致的各类问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 11:57:43