2016-03-23 11 views
2

Javscriptの読み込みコンテンツを取得するために実際のブラウザを生成せずにJavscriptのコンテンツを取得しようとすると、私はテーブルを取得するために要求libを使用しているが、私はテストコードで504を取得し続け、私は100%ではない。Python XHR要求のタイミングアウト

だから私はからの競馬データを得ることで探しています:私は、ネットワークトラフィックを見てのソースを発見したsports.betway.com/#/horse-racing/uk-and-ireland/haydock

トラフィック。 eventIds番号を持つ/ emoapi/emosへの呼び出しです。

私はこの試みた:私は、私が要求から欠落しています他に何を見ることができない

import requests 

url = 'https://sports.betway.com/emoapi/emos' 
params = { 
    'eventIds': '807789', 
    'lang': 'en' 
} 
headers = {'Accept': '*/*', 
      'Accept-Encoding': 'gzip, deflate', 
      'Accept-Language': 'en-US,en;q=0.8', 
      'Connection': 'keep-alive', 
      'Content-Length': '271', 
      'Content-Type': 'application/json', 
      'Host': 'sports.betway.com', 
      'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36'} 

    #Note: I do also set the origin and ref link in the header but I can't post that many links in a question. 



response = requests.post(url, params=params, headers=headers) 

print response 
fixtures = response.json() 
print fixtures 

を。

{"eventIds":[807789,808612,808597,807790,808613,808598,807791,808611,808599,807792,808614,808600,807793,808615,808601,807794,808616,808602,807795,808617,807781,808591,807782,808589,807783,808590,807785,808592,807784,808593,807786,808594,807788,808595,807787],"lang":"en"} 

そして、それはだ:しかし、印刷応答は、これは、IDの全体の束ではなく、私がしようとしているだけのものを要求し、ブラウザのヘッダーでフルペイロードの一例である

として戻ってきますそのURLへのPOSTはなぜタイムアウトしているのかわかりません。

ここで私が間違っている場所に誰かが光を当てることはできますか?それは痛いほど明白ですか?

答えて

0

ペイロードは、url paramsではなくrequest bodyに含める必要があります。 この場合のペイロードはjson生の文字列です。

import requests 
url = 'https://sports.betway.com/emoapi/emos' 
data = '{"eventIds": [807789]}' 
response = requests.post(url, data=data) 
print response.text 
関連する問題