我的任务是从网站页面https://www.dobovo.com/获取预订公寓的日历。当页面被加载时,站点本身从json格式的后请求中接收数据。当我发送类似的请求时,我得到以下错误{'success': False, 'error': 'Method GET is not allowed'}
,尽管我通过post方法发布请求。请求后的Python无法接收json响应
有趣的是,前几天我可以用相同的方式获取数据。 这也是有趣的,我可以从终端获得此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
请告诉我,我做错了什么?
看看你的'ajax'变量,该URL甚至不会返回有效的响应 –
@aws_apprentice这是请求的URL。除非您使用数据发送后请求,否则它不能返回任何内容。而且这个URL是正确的,因为我从终端发送请求并获得必要的数据。或者我不了解你? –
您必须为此任务使用'requests.Session'。 –