2016-03-23 50 views
2

試圖圍繞使用請求獲取Javscript加載內容而不產生實際瀏覽器來呈現它。我正在尋找使用請求庫獲取表,但我一直得到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 

我不能看到我從請求缺少什麼。但打印響應返回作爲

這是在瀏覽器標題哪些請求一大堆IDS的全部有效載荷的一個例子,而不是僅僅是一個我想:

{"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"} 

而且它的一個POST到該URL,所以我不知道爲什麼它超時。

任何人都可以告訴我哪裏會出錯嗎?這件事顯而易見嗎?

回答

0

負載應該包含在請求體中,而不是url params。 這種情況下的有效載荷是json原始字符串。

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