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

生产环境中Selenium是否仅支持无头模式?如何自动显示网球场可用性?

生产环境使用Selenium并非只能采用无头模式

无头模式只是资源占用更低、适合后台静默运行的优化选项,并非强制要求。如果需要可视化展示浏览器操作过程或查询结果,完全可以启动有界面的浏览器,前提是运行环境支持图形输出:

  • 若服务器为Linux系统,可安装Xvfb虚拟显示服务,让浏览器在虚拟桌面中运行,同时通过VNC等工具远程查看界面;
  • 若使用带桌面环境的云服务器(如Windows Server、带GNOME/KDE的Linux服务器),直接启动普通浏览器即可。
网球场可用情况查询的实现方案

不管用无头还是有头模式,核心流程都是用Selenium自动完成查询操作、提取可用场地信息,再将结果展示出来。

方案1:有头浏览器直接展示操作与结果

如果需要直观看到浏览器的查询过程,直接启动普通浏览器即可,Python示例代码如下:

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

# 启动有头Chrome浏览器
driver = webdriver.Chrome()
driver.get("目标网球场预订网站地址")

# 自动输入查询日期
date_input = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, "date-input"))
)
date_input.send_keys("2024-06-15")

# 选择查询时间段
time_select = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, "time-select"))
)
time_select.select_by_value("14:00-16:00")

# 点击查询按钮
search_btn = driver.find_element(By.ID, "search-btn")
search_btn.click()

# 等待结果加载并提取可用场地信息
available_courts = WebDriverWait(driver, 10).until(
    EC.presence_of_all_elements_located((By.CLASS_NAME, "available-court"))
)

# 打印结果并保持浏览器打开
print("可用网球场:")
for court in available_courts:
    print(court.text)

input("按回车键关闭浏览器...")
driver.quit()

方案2:无头模式运行,提取结果后单独展示

如果想用无头模式节省资源,无需展示浏览器操作,可提取查询结果后通过HTML报告、命令行输出或消息通知等方式展示,Python示例代码如下:

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

# 配置无头Chrome浏览器
chrome_options = Options()
chrome_options.add_argument("--headless=new")
chrome_options.add_argument("--disable-gpu")
chrome_options.add_argument("--window-size=1920x1080")

driver = webdriver.Chrome(options=chrome_options)
driver.get("目标网球场预订网站地址")

# 自动完成查询操作(逻辑与有头模式一致)
date_input = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, "date-input"))
)
date_input.send_keys("2024-06-15")

time_select = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, "time-select"))
)
time_select.select_by_value("14:00-16:00")

search_btn = driver.find_element(By.ID, "search-btn")
search_btn.click()

# 提取可用场地信息
available_courts = WebDriverWait(driver, 10).until(
    EC.presence_of_all_elements_located((By.CLASS_NAME, "available-court"))
)

# 生成HTML报告保存结果
result_html = """
<html>
<head><title>网球场可用情况</title></head>
<body>
<h1>2024-06-15 14:00-16:00 可用网球场</h1>
<ul>
"""
for court in available_courts:
    result_html += f"<li>{court.text}</li>"
result_html += """
</ul>
</body>
</html>
"""

with open("tennis_court_availability.html", "w", encoding="utf-8") as f:
    f.write(result_html)

driver.quit()
注意事项
  • 确认目标网站无反爬机制(如验证码、IP封禁),必要时可添加time.sleep()等待、配置代理或模拟真实用户操作(如随机滚动页面);
  • 生产环境可将脚本设置为定时任务(如Linux的cron、Windows任务计划),定期自动查询并推送结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 19:48:44