Python使用requests进行HTML的POST请求

3
我想用Python从http://idojarasbudapest.hu/archivalt-idojaras下载一些天气信息,但在我按下“Mehet”提交按钮之前,我看不到必要的信息。 我需要提交两个信息:年份('ev')和月份('ho')。

我理解,我需要通过POST请求发送两个参数:'ev'和'ho',然后网站应该“发送”所请求的信息。

我写的以下代码打印原始网站的HTML代码,而不是请求的代码。

import requests

data= {'ev': '2016','ho': 'Január'}
r = requests.post('http://idojarasbudapest.hu/archivalt-idojaras', data=data)

print (r.text)

这是一个HTML表单,看起来像这样:

The html form

有什么想法如何解决它呢?感谢任何答案或建议。
2个回答

4

从浏览器在按下"Mehet"按钮时发送的POST请求中检查,我发现POST请求中发送的参数形式与您通过requests发布的参数形式不同。

Firefox developer tools screenshot -- http://idojarasbudapest.hu/archivalt-idojaras

也许将你的代码更改为以下内容会更好:

import requests

data= {'ev': '2016','ho': '01', 'button': 'Mehet'}
r = requests.post('http://idojarasbudapest.hu/archivalt-idojaras', data=data)

print (r.text)

谢谢,我正在寻找那个!:) - ajlaj25

1
向你的有效载荷中添加 'button': 'Mehet'
data= {'ev': '2016', 'ho': '01', 'button': 'Mehet'}

我已经尝试过这个,但那并没有解决问题。Odysseas提到的方法是有效的。谢谢! - ajlaj25
1
@ajlaj25 哦,是的,我没有意识到,抱歉。您必须提交选项的值,对于一月来说,这将是“01”。我会相应地进行编辑。 - Luke

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接