【问题标题】:POST REQUEST PYTHON does not change the default date in the responsePOST REQUEST PYTHON 不会更改响应中的默认日期
【发布时间】:2020-04-19 10:11:01
【问题描述】:

enter image description here我正在尝试在https://seffaflik.epias.com.tr/transparency/piyasalar/gop/ptf.xhtml 上发布表单数据,我得到了回复,但我发布的日期不正确。 这是我使用的代码:

import requests.sessions
url = "https://seffaflik.epias.com.tr/transparency/piyasalar/gop/ptf.xhtml"
aaa = {"j_idt202": "j_idt202",
"j_idt202:date1_input": "15.04.2020",
"j_idt202:date2_input": "17.04.2020",
"j_idt202:goster": "",
"j_idt202:dt_rppDD": "24",
"javax.faces.ViewState": "-4553737376077641878:8530200118323030971"}
bbb = {"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
"Accept-Encoding": "gzip, deflate, br",
"Accept-Language": "en-US,en;q=0.9",
"Cache-Control": "max-age=0",
"Connection": "keep-alive",
"Content-Length": "192",
"Content-Type": "application/x-www-form-urlencoded",
"Cookie": "JSESSIONID=pRJV7cTKKZBG7umanw-d7LLA5dTvfTd52EDzotlR.prd-transparency-n40; TS015dca6c=01cbc7c0b2c35901079ad1afda5dd13dad6a6f5cc4fcaa1cb200890b1e0401d54b571361e1ceea05c8afd884fc986fa67b08b13d13f8c60c97fff85d2e811da2a543cdf9f8; _ga=GA1.3.1509483381.1584105112; _gid=GA1.3.986020094.1587121047; TS01f69930=01cbc7c0b2ab45c0fe95c9305e91aa235e908d80dec19f4d76119e4e3058ae32aac517c2048199e58051222727e2fe312518660537; _gat=1",
"Host": "seffaflik.epias.com.tr",
"Origin": "https://seffaflik.epias.com.tr",
"Referer": "https://seffaflik.epias.com.tr/transparency/piyasalar/gop/ptf.xhtml",
"Sec-Fetch-Dest": "document",
"Sec-Fetch-Mode": "navigate",
"Sec-Fetch-Site": "same-origin",
"Sec-Fetch-User": "?1",
"Upgrade-Insecure-Requests": "1",
"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"}
r = requests.post(url, data= json.dumps(aaa), headers = bbb)
print(r.text)

我发布了 15.04.2020 和 17.04.2020,但响应包含当前日期,这是默认日期。 有人对此有想法吗???

【问题讨论】:

  • 您指的是 response.html 中的哪个日期?
  • @RafalS 在响应 html 中包含 --> var data=[{"date":"19-04-2020 00:00","price":228.2,"priceUsd":33.01, "priceEur":30.46}... 而不是 15.04.2020
  • 它似乎无法识别您的日期过滤器并使用当前日期作为默认日期。您可能需要查看 API 以了解如何指定日期。可悲的是,我不会说土耳其语来调查它
  • @AzyCrw4282 我也不会说土耳其语。查看 API 是什么意思?我到底应该怎么做?
  • 你怎么知道传递什么参数来得到你想要的结果?您是否使用该网站的任何文档?

标签: python forms date post python-requests


【解决方案1】:

在一个类似的网页上,我只是更改了表单数据部分中的参数并且它起作用了。

如果您要获取的数据是简单的静态数据,即不涉及执行 Js 代码来检索数据,则上述方法会起作用。请注意,request 模块只需使用给定的标头和参数向已定义的 url 发出 HTTP 请求,并简单地以服务器产生的任何内容进行响应。

要做你想做的事,只能使用 Web API 来实现,这样你就可以在过滤器中定义你想要的东西,服务器会用你请求的适当数据来响应 (example here)。这个site 很遗憾没有。一个不错的选择是在Headless Web Automation 上探索浏览器实例将在哪里启动并获取您请求的数据。如果您愿意,可以对此进行更多研究。

【讨论】:

  • 感谢您的评论。但是,你是怎么发现它没有的呢?我用 selenium 创建了一个自动化程序,但是它非常慢而且不那么可信。
  • 出现的唯一相关网站是this,它看起来不像我要找的。由于是外语,我也发现即使在进行谷歌翻译后也很难解释意思。
  • 您还可以研究硒变慢的原因。根据我的经验,我发现速度还可以。你在使用无头吗?
  • 当我使用 headless 时,它没有得到我提交的正确日期,或者它没有得到任何日期。它只能在没有无头且没有可信度的情况下工作。我可以把我的剧本发给你吗?
猜你喜欢
  • 2011-03-09
  • 2016-06-15
  • 2016-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多