我的任务是从网站页面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=en
或wget --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
请告诉我,我做错了什么?
答案 0 :(得分:-1)
根据sigmavirus24's answer,只有在重定向发生时,POST请求才会更改为GET。似乎 dobovo.com 仅适用于https,因此将 ajax 变量中的“http”更改为“https”,您就可以了。