【问题标题】:Python HTML POST with requests带有请求的 Python HTML POST
【发布时间】:2018-03-27 01:19:52
【问题描述】:

我想用python从http://idojarasbudapest.hu/archivalt-idojaras下载一些天气信息,但是直到我没有按下提交按钮“Mehet”,我才能看到必要的信息。我必须提交两个信息:年份 ('ev') 和月份 ('ho')。

据我了解,我必须发布一个带有两个参数的请求:'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 表单如下所示:

任何想法,如何解决这个问题? 感谢您的任何回答或建议。

【问题讨论】:

    标签: python html python-requests


    【解决方案1】:

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

    所以也许把你的代码改成这样:

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

    【讨论】:

    • 谢谢,我正在找那个!:)
    【解决方案2】:

    在您的有效负载中,添加'button': 'Mehet'

    data= {'ev': '2016', 'ho': '01', 'button': 'Mehet'}
    

    【讨论】:

    • 我试过这个,但没有解决问题。奥德西斯提到的东西正在起作用。谢谢!
    • @ajlaj25 哦,是的,我没有意识到,对不起。您必须提交选项的值,即一月份的 01。将进行相应的编辑。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多