You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复Python+Beautiful Soup爬取Bet Explorer赔率时找不到表格的问题?

修复Bet Explorer赔率爬取代码

原代码找不到表格的核心原因是表格选择器class错误,且未模拟浏览器请求导致页面内容未正常加载。以下是修复后的代码,可生成包含赛事名称、主胜赔率、平局赔率、客胜赔率及赛事时间的Pandas DataFrame:

import pandas as pd
import requests
from bs4 import BeautifulSoup

# 目标网站URL
URL = "https://www.betexplorer.com/"

# 模拟浏览器请求头,规避基础反爬拦截
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36"
}

# 发送带请求头的GET请求
response = requests.get(URL, headers=headers)

if response.status_code == 200:
    soup = BeautifulSoup(response.text, 'html.parser')
    # 修正表格选择器:首页赛事表格实际class为table-main
    table_matches = soup.find('table', attrs={'class': 'table-main'})
    
    if table_matches:
        data = []
        # 仅遍历数据行(跳过表头)
        rows = table_matches.find_all('tr', attrs={'class': 'table-main__row'})
        
        for row in rows:
            cols = row.find_all('td')
            # 过滤掉列数不足的无效行
            if len(cols) >= 6:
                # 提取赛事名称(优先取a标签文本,避免冗余内容)
                match_name = cols[1].find('a').get_text(strip=True) if cols[1].find('a') else cols[1].get_text(strip=True)
                # 提取对应位置的赔率数据
                home_odds = cols[3].get_text(strip=True)
                draw_odds = cols[4].get_text(strip=True)
                away_odds = cols[5].get_text(strip=True)
                # 提取赛事时间
                match_time = cols[0].get_text(strip=True)
                
                data.append({
                    "赛事名称": match_name,
                    "主胜赔率": home_odds,
                    "平局赔率": draw_odds,
                    "客胜赔率": away_odds,
                    "赛事时间": match_time
                })
        
        # 生成结构化DataFrame
        df = pd.DataFrame(data)
        print(df)
    else:
        print("未找到赛事表格")
else:
    print(f"请求失败,HTTP状态码: {response.status_code}")

关键修改说明:

  • 添加请求头:模拟真实浏览器请求,绕过网站基础反爬机制,确保获取完整页面内容。
  • 修正表格选择器:将原错误的class替换为网站实际使用的table-main,准确定位赛事表格。
  • 精准字段提取:针对页面DOM结构,从对应列中提取目标数据,优先取赛事名称的a标签文本以避免冗余信息。
  • 过滤无效行:仅处理包含完整数据的行,保证最终DataFrame的有效性。

内容的提问来源于stack exchange,提问作者Anthony Kinyua

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 14:26:08