在请求后的Python

时间:2017-07-10 18:05:42

标签: python json ajax post python-requests

我的任务是从网站页面https://www.dobovo.com/获取公寓预订日历。当页面加载时,站点本身以json格式从请求后接收数据。当我发送类似的请求时,我收到以下错误{'success': False, 'error': 'Method GET is not allowed'},尽管我通过post方法发布请求。

有趣的是,几天前我可以用同样的方式获取数据。 我可以从终端获得这个json也很有趣:curl -d "id=89740&date=2017-07-01" https://www.dobovo.com/dobovo/apt/ajax.php?action=getCalendar&lang=enwget --post-data="id=82731&date=2017-07-01" https://www.dobovo.com/dobovo/apt/ajax.php?action=getCalendar&lang=en (id = 82731是一个公寓的例子)

我的Python代码:

from requests import post
def get_calendar(url):
    ajax = 'http://www.dobovo.com/dobovo/apt/ajax.php?action=getCalendar&lang=en'
    first_day_in_month = '2017-07-01'
    id_ = url[-10:-5]
    form_data = {
        'id': id_,
        'date': first_day_in_month
    }
    response = post(url=ajax, data=form_data)
    return response.json()

此处的网址是指向包含日历的网页的链接,例如https://www.dobovo.com/zaporozhye-apartments/orchid-82731.html

请告诉我,我做错了什么?

1 个答案:

答案 0 :(得分:-1)

根据sigmavirus24's answer,只有在重定向发生时,POST请求才会更改为GET。似乎 dobovo.com 仅适用于https,因此将 ajax 变量中的“http”更改为“https”,您就可以了。