如何使用Python从Betexplorer抓取指定博彩公司的开盘赔率?
从betexplorer站点抓取指定博彩公司开盘赔率的实现方案
import requests from bs4 import BeautifulSoup def get_odds(ids, target_bookmaker): result = {} for id in ids: url = f'https://www.betexplorer.com{id}' url_parts = url.split('/') matchup = url_parts[6] match_id = url_parts[7] # 提取URL内的比赛ID api_url = f"https://www.betexplorer.com/match-odds/{match_id}/1/1x2/" headers = { "Referer": "https://www.betexplorer.com", 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36' } s = requests.Session() s.headers.update(headers) response = s.get(api_url) soup = BeautifulSoup(response.text, 'html.parser') # 遍历赔率表匹配目标博彩公司 for tr in soup.select('table.table-main tbody tr'): bookmaker_ele = tr.select_one('td:first-child a') if not bookmaker_ele: continue bookmaker_name = bookmaker_ele.get_text(strip=True) if bookmaker_name == target_bookmaker: # 提取主胜/平局/客胜三个盘口的开盘赔率 opening_odds = [td.get('data-opening-odd', '') for td in tr.select('td.table-main__odds')] result[matchup] = { 'match_id': match_id, 'bookmaker': target_bookmaker, 'opening_odds': opening_odds } break return result # 调用示例 if __name__ == '__main__': ids = ['/soccer/argentina/primera-division-2016/gimnasia-l-p-colon-santa-fe/4YWZmAJt/'] # 替换为你需要抓取的博彩公司名称即可 target_bookmaker = "Bet365" odds = get_odds(ids, target_bookmaker) print(odds)
功能说明
- 新增
target_bookmaker入参,传入要匹配的博彩公司全称即可定位对应赔率行 - 自动提取该行三个1x2盘口的
data-opening-odd属性值,按主胜、平局、客胜顺序返回 - 最终输出字典格式结果,可直接用于后续数据存储或分析
注意事项
- 博彩公司名称需要和站点展示的名称完全一致才能匹配成功,如需模糊匹配可将判断条件
bookmaker_name == target_bookmaker修改为target_bookmaker in bookmaker_name - 站点存在反爬策略,高频请求建议添加随机延迟,避免IP被限制访问
内容的提问来源于stack exchange,提问作者luka
相关产品推荐
相关产品推荐

