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

如何部署每3天运行一次的Selenium脚本?

部署方案(实现每3天运行一次)

以下是几种稳定可行的部署方式,兼顾定时触发需求和环境一致性:

1. VPS + cron 定时任务

这是最适合长期运行的方案,操作简单且可控性强:

  • 租一台基础配置的VPS(推荐Ubuntu系统),将脚本上传至服务器指定目录
  • 安装依赖环境:
    sudo apt update
    sudo apt install python3 python3-pip chromium-browser
    pip3 install selenium python-telegram-bot
    
  • 配置cron定时任务:
    执行crontab -e,添加一行定时规则:
    0 0 */3 * * /usr/bin/python3 /home/your_user/script/your_bot.py >> /home/your_user/script/bot_log.log 2>&1
    
    说明:每3天的0点0分自动运行脚本,同时将日志输出到指定文件,方便后续排查问题

2. Docker容器化部署

用Docker打包整个运行环境,彻底解决依赖版本不一致、环境不兼容问题:

  • 编写Dockerfile:
    FROM python:3.9-slim
    
    # 安装Chrome浏览器、Driver及系统依赖
    RUN apt update && apt install -y chromium chromium-driver
    RUN pip install selenium python-telegram-bot
    
    # 复制脚本到容器内
    COPY your_bot.py /app/
    WORKDIR /app
    
    # 脚本启动命令
    CMD ["python", "your_bot.py"]
    
  • 构建镜像:
    docker build -t telegram-scraper-bot .
    
  • 配合宿主机cron定时启动容器:
    在宿主机执行crontab -e,添加:
    0 0 */3 * * docker run --rm telegram-scraper-bot >> /home/your_user/bot_docker_log.log 2>&1
    

3. 云函数(如AWS Lambda、阿里云函数计算)

若不想维护VPS,可选择无服务器的云函数方案,需适配无桌面环境的Chrome运行:

  • 在云函数控制台上传打包好的代码(需包含无头Chrome配置)
  • 在控制台设置定时触发器,选择「每3天执行一次」的触发规则

解决Chrome Driver执行问题

你遇到的Driver报错,大多源于版本不匹配、无桌面环境限制或权限问题,按以下步骤排查修复:

1. 启用无头Chrome模式

服务器通常无桌面环境,必须启用无头模式运行Chrome,代码示例:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

chrome_options = Options()
chrome_options.add_argument("--headless=new")  # 新版无头模式,行为更接近真实Chrome
chrome_options.add_argument("--no-sandbox")    # 禁用沙箱,规避权限限制
chrome_options.add_argument("--disable-dev-shm-usage")  # 解决服务器内存不足问题
chrome_options.add_argument("--disable-gpu")   # 禁用GPU加速,适配无桌面环境

# 初始化Driver(系统安装的Driver通常在/usr/bin/chromedriver)
driver = webdriver.Chrome(options=chrome_options)

2. 自动匹配Chrome与Driver版本

用webdriver-manager自动下载对应版本的Driver,无需手动核对版本:

  • 安装依赖:
    pip install webdriver-manager
    
  • 修改代码:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from webdriver_manager.chrome import ChromeDriverManager

chrome_options = Options()
chrome_options.add_argument("--headless=new")
chrome_options.add_argument("--no-sandbox")
chrome_options.add_argument("--disable-dev-shm-usage")

自动下载并使用匹配版本的Driver

driver = webdriver.Chrome(
executable_path=ChromeDriverManager().install(),
options=chrome_options
)

## 3. 排查权限与路径问题
- 确保Chrome和Driver的可执行文件有运行权限:`chmod +x /usr/bin/chromedriver`
- 避免用root用户运行脚本,创建普通用户并赋予脚本目录的读写权限
- 若手动指定Driver路径,需确认路径绝对正确,或直接依赖系统PATH自动查找

## 4. 规避版本冲突
若手动安装Driver,必须保证Driver版本与Chrome版本完全一致:
- 查看Chrome版本:`chromium-browser --version`
- 下载对应版本的Driver,放到系统PATH目录(如`/usr/bin`)

内容的提问来源于stack exchange,提问作者Abdulaziz
相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 09:23:27