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

如何在Heroku部署每5小时运行的Selenium校园成绩爬取Python程序

把Selenium成绩爬取程序部署到Heroku并实现每5小时自动运行

先改程序里的几个关键地方

1. 删掉没用的代码

原代码里导入了from tkinter import *但根本没用到,直接删了就行,省得多余依赖出问题。

2. 别把账号密码写死在代码里

把硬编码的用户名、密码、网址换成从环境变量读取,避免泄露:

import os
username = os.environ.get("SCHOOL_USERNAME")
password = os.environ.get("SCHOOL_PASSWORD")
url = os.environ.get("SCHOOL_URL")

后面在Heroku后台配置这些变量就行。

3. 适配Heroku的Chrome环境

Heroku的无头Chrome需要特定配置,把原有的驱动初始化代码换成下面这段:

from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager

chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("--headless")
chrome_options.add_argument("--disable-gpu")
chrome_options.add_argument("--no-sandbox")
chrome_options.add_argument("--disable-dev-shm-usage")
chrome_options.binary_location = os.environ.get("GOOGLE_CHROME_BIN")

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

这样能保证驱动在Heroku上正常跑起来。

4. 修改文件保存方式

Heroku的文件系统是临时的,重启后文件就没了。如果只是临时存一下,把原有的文件路径改成当前目录:

# 替换原有的文件保存代码
with open(f"{date}.txt", 'w', encoding='utf-8') as f:
    date = date.replace("--", ":")
    f.write(f"{date}\n\nTrimester1 = {Trimestre1}\n\nTrimester2 = {Trimestre2}\n\nTrimester3 = {Trimestre3}")

要是想持久化保存,建议加个云存储(比如免费的AWS S3额度),把文件传上去。

部署到Heroku的步骤

1. 准备三个配置文件

  • requirements.txt:列全所有依赖包
selenium==4.15.0
beautifulsoup4==4.12.2
webdriver-manager==4.0.1
python-dotenv==1.0.0
  • Procfile:告诉Heroku怎么运行你的程序
worker: python your_script_name.py

把your_script_name换成你实际的脚本文件名。

  • runtime.txt:指定Python版本(用3.10就行,兼容大部分依赖)
python-3.10.12

2. 上传代码到Heroku

  1. 先装Heroku CLI,然后登录:heroku login
  2. 创建一个Heroku应用:heroku create 你的应用名
  3. 添加Chrome相关的buildpack:
heroku buildpacks:add https://github.com/heroku/heroku-buildpack-google-chrome.git
heroku buildpacks:add https://github.com/heroku/heroku-buildpack-chromedriver.git
heroku buildpacks:add heroku/python
  1. 配置环境变量(把括号里的内容换成你自己的信息):
heroku config:set SCHOOL_USERNAME=你的学号/用户名
heroku config:set SCHOOL_PASSWORD=你的密码
heroku config:set SCHOOL_URL=www.SchoolWebsite.com
heroku config:set GOOGLE_CHROME_BIN=/app/.apt/usr/bin/google-chrome
  1. 推送代码:
git init
git add .
git commit -m "第一次部署"
git push heroku main

设置每5小时自动运行

用Heroku的Scheduler插件:

  1. 安装Scheduler:heroku addons:create scheduler:standard
  2. 打开Scheduler管理界面:heroku addons:open scheduler
  3. 点击「Add Job」,设置:
    • 频率选「Every 5 hours」
    • 命令填python your_script_name.py
    • 时区选你所在的时区(比如Asia/Shanghai)

几个要注意的点

  • Heroku免费版30分钟没活动会休眠,但Scheduler触发的任务会自动唤醒应用。
  • 免费版每月有550小时运行时长,每5小时跑一次,每次就算跑5分钟,每月也才12小时左右,完全够用。
  • 如果遇到页面加载超时,适当把WebDriverWait的等待时间调长一点,或者加个重试逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 12:40:43