每次发送时,Ajax响应都会更改值

时间:2019-11-19 15:09:12

标签: javascript python ajax web-crawler

我正试图制作一个网络爬虫,以从博彩公司获得赔率。他们的网站完全由AJAX请求组成,而我对此或JS毫无经验,无法弄清正在发生的事情以及我能做些什么来获得想要的结果。

到目前为止,我的代码使用Selenium打开页面并检索发送API请求所需的cookie,并将其与标题和cookie一起传递,然后递归发送对其中包含的页面的请求;

<CheckBox IsChecked="{Binding Path=IsChecked}"/>

我已经到了模仿AJAX调用并将请求发送到API的地步,该API返回: https://www.bet365.com/SportsBook.API/web?lid=1&zid=1&pd=%23AC%23B1%23C1%23D8%23E83884115%23F3%23G0%23H0%23I1%23P%5E13%23Q%5E43316955&cid=197&cgid=2

此页面供稿: https://www.bet365.com/#/AC/B1/C1/D8/E83884115/F3/G0/H0/I1/P^13/Q^43316955

我可以在此响应中看到所需的数据(OD =值),但实际上是我真正感兴趣的值,刷新后每隔几秒钟便会更改为循环中似乎不同的编码响应。这些值的确具有与页面上的赔率相关的值,因为具有相同赔率的市场在API响应中具有相同的编码值。 例如:

headers = {
'Host': 'www.bet365.com',
'Connection': 'keep-alive',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
              'Chrome/78.0.3904.97 Safari/537.36',
'DNT': '1',
'Accept': '*/*',
'Sec-Fetch-Site': 'same-origin',
'Sec-Fetch-Mode': 'cors',
'Referer': 'https://www.bet365.com/',
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'en-GB,en-US;q=0.9,en;q=0.8',
}
r = requests.get(api, headers=headers, cookies=c)
for link in getLinks(r.text):
    print(requests.get('https://www.bet365.com/SportsBook.API/web? 
    lid=1&zid=1&'+link+'&cid=197&cgid=0', headers=headers, cookies=c).text)

在第一个请求上,然后:

PA;ID=394840198;IT=83884115-394840198;NA=Galatasaray;OD=F^D;NF=83884115;

刷新后。正如上面的bet365链接所示,这两个值均表示赔率是2.4。

我的问题是,有什么办法可以控制通过请求标头或其他方式提供给我的编码值,因为我确实想要并可以轻松使用,但似乎服务器正在发送每次随机编码。

0 个答案:

没有答案