如何通过egamersworld API获取赛事直播数据?
解决egamersworld API返回空列表的问题
出现空列表的核心原因是请求缺少必要的参数和验证头,以下是具体解决步骤:
1. 分析网站实际API调用
打开目标页面的浏览器开发者工具(F12),查看网络请求会发现:
- 网站实际调用的API带有额外参数,比如
status=live(指定直播中赛事)、page=1、per-page=20 - 同时需要携带页面的
X-CSRF-Token和会话Cookie进行验证
2. 修改代码获取有效数据
先访问页面获取验证所需的CSRF Token和Cookie,再携带参数请求API:
import requests from bs4 import BeautifulSoup session = requests.Session() base_page = "https://egamersworld.com/matches" api_url = "https://api.egamersworld.com/matches?lang=en&status=live&page=1&per-page=20" # 第一步:访问页面获取CSRF Token和会话Cookie headers = { 'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:115.0) Gecko/20100101 Firefox/115.0' } page_response = session.get(base_page, headers=headers) soup = BeautifulSoup(page_response.text, 'html.parser') csrf_token = soup.find('meta', attrs={'name': 'csrf-token'})['content'] # 更新请求头,添加验证信息 headers.update({ 'X-CSRF-Token': csrf_token, 'Referer': base_page }) # 第二步:请求API获取直播数据 api_response = session.get(api_url, headers=headers, timeout=30) print(api_response.status_code) print(api_response.json())
3. 参数说明
status:指定赛事状态,可选值有live(直播中)、upcoming(即将开始)、finished(已结束)page/per-page:分页参数,控制返回的赛事数量和页码X-CSRF-Token:网站用于防止跨站请求伪造的验证字段,必须从页面meta标签中获取
内容的提问来源于stack exchange,提问作者Khaled Koubaa
相关产品推荐
相关产品推荐

