2017-07-10 16 views
0

私の仕事はサイトのページhttps://www.dobovo.com/からアパルト予約をする予定です。サイト自体は、ページがロードされたときに、json形式でポストリクエストからデータを受け取ります。同様のリクエストを送信すると、私はpostメソッドによって要求を投稿しますが、次のエラー{'success': False, 'error': 'Method GET is not allowed'}が発生します。ポストリクエスト後にjson-responseを受け取ることができませんPython

興味深いことに、数日前に私は同じようにデータを得ることができました。 それは私が、端末からこの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が1つのアパートの一例である)

私の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() 

ここにURLがへのリンクですカレンダー付きのページhttps://www.dobovo.com/zaporozhye-apartments/orchid-82731.html

私に間違っていることを教えてください。

+0

あなたの 'ajax'変数を見て、そのURLは有効な応答を返しません。 –

+0

@aws_apprenticeこれはリクエストのURLです。あなたがデータとともにpost-requestを送信しない限り、何も返せません。このURLは、端末から要求を送信して必要なデータを取得するため、正しいです。それとも私はあなたを理解していないのですか? –

+0

このタスクに 'requests.Session'を使用する必要があります。 –

答えて

-1

sigmavirus24's answerによると、リダイレクトが発生した場合にのみ、POST要求がGETに変更されます。 dobovo.comのように見えるので、ajax変数で 'http'を 'https'に変更しても問題ありません。

関連する問題