Python XHR请求时间输出

时间:2016-03-23 12:45:14

标签: python web-scraping xmlhttprequest python-requests

尝试使用请求来获取Javscript加载的内容,而不会生成实际的浏览器来呈现它。我正在使用请求lib来获取表格,但我一直在用我的测试代码获得504,而我不是100%的原因。

所以我正在寻找赛马数据: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

我无法看到我在请求中遗漏了什么。但打印响应以“

”的形式返回

这是浏览器标题上的完整有效负载的示例,它请求一大堆ID而不仅仅是我尝试的那个:

{"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,因此我不确定为什么会超时。

任何人都可以了解我在这里出错的地方吗?这是一件非常明显的事吗?

1 个答案:

答案 0 :(得分:0)

有效负载应包含在请求正文中而不是url参数中。 在这种情况下,有效负载是一个json原始字符串。

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