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

Selenium爬取实时比分网站时无法提取时间值10:30的问题求助

解决Selenium提取时间文本的AttributeError问题

嘿,别慌!我来帮你搞定这个时间提取的小麻烦~

首先得纠正一下你的推测:这个报错和时间是否声明为字符串没关系。AttributeError: 'NoneType' object has no attribute 'time' 其实是说你尝试调用一个None对象的time方法/属性——说白了就是你用来定位时间元素的代码没找到目标元素,返回了None,然后你又对这个None做了xxx.time的操作,才触发了报错。

咱们一步步来解决:

1. 修正元素定位逻辑

看你提供的HTML片段:

<td class="table-time datet t1522665000-1-1-0-0">10:30</td>

这里的class里,t1522665000是动态变化的时间戳,所以不能用完整的class值来定位。咱们要用固定不变的class部分,比如table-time或者datet。

推荐这几种定位方式:

  • CSS选择器(最稳定):td.table-time
  • XPath://td[contains(@class, 'table-time')]
  • 类名定位:table-time

2. 正确提取文本内容

找到元素后,用.text属性就能拿到<td>标签里的10:30,根本不需要什么.time属性(这是你之前代码里的错误点哦)。

给你个完整的修正代码示例:

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

options = webdriver.ChromeOptions()
options.add_argument("headless")
driver = webdriver.Chrome(options=options)

# 替换成你的目标网站URL
driver.get("https://your-score-site.com")

# 关键:等待元素加载完成(避免页面没加载完就定位导致返回None)
try:
    # 最多等待10秒,直到时间元素出现
    time_element = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.CSS_SELECTOR, "td.table-time"))
    )
    # 提取时间文本
    match_time = time_element.text
    print(f"提取到的比赛时间:{match_time}")  # 输出 10:30
except Exception as e:
    print(f"定位元素出错:{e}")

driver.quit()

3. 额外注意点

  • 如果页面上有多个这样的时间<td>,要用find_elements(复数)来获取所有元素,再遍历提取文本
  • 有些网站可能会用JS动态渲染时间,这时候等待元素的步骤就很重要,一定要用WebDriverWait而不是time.sleep()(后者不够稳定)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:34:41