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

如何用Selenium/Python获取网站系统时间以精准预约露营地

解决露营地预约脚本的时间同步问题

核心问题修正

你之前获取网站时间的方法错误,driver.get()是用于加载网页的API,要获取页面元素的时间文本,需使用元素定位方法提取内容。以下是完整解决方案:

步骤1:正确获取网站系统时间

网站的系统时间在id="systemTime"的div元素中,先等待元素加载完成,再提取其文本内容。使用WebDriverWait可避免元素未加载导致的报错。

步骤2:解析网站时间为可计算的datetime对象

确认网站时间的格式(比如YYYY-MM-DD HH:MM:SS或带时区的格式),用datetime.strptime解析成datetime对象,注意时区要和目标时间保持一致。

修改后的完整代码

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import datetime
import time

# 滚动到预约按钮
driver.execute_script("arguments[0].scrollIntoView()", resbutton)

# 目标预约时间(注意时区要和网站时间一致)
target = datetime.datetime(2023, 3, 14, 7, 0, 1)

def sleep_until(target):
    # 等待网站系统时间元素加载完成
    system_time_elem = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.XPATH, "//div[@id='systemTime']"))
    )
    # 提取网站时间文本,假设格式为"2023-03-14 07:00:00",根据实际格式调整
    site_time_str = system_time_elem.text.strip()
    # 解析为datetime对象,格式符需匹配网站显示的时间格式
    now = datetime.datetime.strptime(site_time_str, "%Y-%m-%d %H:%M:%S")
    
    delta = target - now
    if delta > datetime.timedelta(0):
        # 减去0.01秒缓冲抵消网络延迟,确保网站时间达标后再操作
        time.sleep(delta.total_seconds() - 0.01)
        return True

# 等待到目标时间后点击预约按钮
sleep_until(target)
resbutton.click()

注意事项

  • 务必根据网站实际显示的时间格式调整strptime的格式符,若网站时间带时区,需用pytz库处理时区转换。
  • 缓冲时间可根据实际网络情况微调,避免因延迟导致的操作偏差。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 06:27:29