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

Selenium抓取Betexplorer英超轮次数字无有效输出问题求解

问题修复方案

原有代码错误梳理

  • 第一版代码错误点:
    1. 定位方式混用:find_elements(By.CLASS_NAME, "th.h-text-left") 写法错误,By.CLASS_NAME仅支持传入单个类名,带标签、带点的是CSS选择器语法,应改为By.CSS_SELECTOR
    2. 未提取纯数字,直接获取的轮次文本包含.Round后缀,不符合入库要求
    3. driver.close没有加括号,未实际执行关闭驱动操作
  • 第二版代码错误点:
    1. 正则提取数字时使用了未定义的变量s,应该传入获取到的文本变量PremierLeague_text
    2. re.findall返回的是列表,需要提取首个匹配结果转成整数,才能匹配数据库Number_Round的整数类型要求
    3. 同样存在driver.close未加括号的问题

可正常运行的修正代码

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import re

# 提前初始化driver,示例:
# from selenium import webdriver
# driver = webdriver.Chrome()

wait = WebDriverWait(driver, 20)
Values_PremierLeague = []

driver.get("https://www.betexplorer.com/soccer/england/premier-league/fixtures/")

# 等待轮次元素加载完成
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "th.h-text-left")))

# 遍历所有轮次元素
for round_element in driver.find_elements(By.CSS_SELECTOR, "th.h-text-left"):
    round_text = round_element.text.strip()
    if 'Round' in round_text:
        # 提取数字并转为整数
        round_num = int(re.search(r'\d+', round_text).group())
        # 包装成元组适配executemany要求的格式
        Values_PremierLeague.append((round_num,))
        print(round_num)

driver.close()

入库适配说明

原有SQLite插入代码无需修改,修正后的Values_PremierLeague已经符合executemany要求的元组列表格式,每个元素都是单个整数组成的元组,可直接执行插入操作。

内容的提问来源于stack exchange,提问作者Erling Olsen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 06:15:07