我正在用 Python 创建一个自动化程序,它将使用 selenium 自动导航到我学校的网站,并加入在线课程等。我已经完全完成了那部分,一切都运行良好。现在,我正在尝试弄清楚如何安排这些操作。
我在考虑使用计划?它似乎适合简单的工作,但我不知道它是否适合这样的工作。
我总共有 10 节课。我一天有 6 节课。我的上课周从周一到周五。在我的课程表中,总共有6 天,这意味着每周,课程表中的一天会被轮换出去,而那一周我没有这天的课,另一天就会轮换进来。
因此,为了进一步解释我的意思,在第一周,我会有从周一到周五的 1-5 天,但没有第 6 天。我会在下周一有第 6 天。
我将这些日子定义如下:
import configparser from selenium import webdriver from selenium.common.exceptions import TimeoutException from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait driver = webdriver.Firefox() <defining what each class does here with selenium, etc.> # Defining what classes I have in each day def Day1(): class() class() class() class() class() class() def Day2(): class() class() class() class() class() class() def Day3(): class() class() class() class() class() class() def Day4(): class() class() class() class() class() class() def Day5(): class() class() class() class() class() class() def Day6(): class() class() class() class() class() class()
class每天上不同的课。有些课相同,有些课不同,但这对于这个问题来说并不重要。(我之所以把所有课都称为class这个问题,是因为这样比较简单)
class
我该如何安排这些日子(第 1 天 - 第 6 天),以便它们从周一到周五运行,一天轮换出去,然后在下周再回来(正如我上面所描述的)?
Pythonschedule模块似乎可以做到这一点,但是当我遇到这样的事情时,我甚至不知道从哪里开始。
schedule
我觉得这是一个非常简单的解决方案,但我似乎无法解决它。
您需要计算今天是学期的哪一天,然后将其除以 6。一段代码是一个很好的起点,用于获取当前年份的当前日期:
from datetime import datetime day_of_year = datetime.now().timetuple().tm_yday
您还需要弄清楚一年中的哪一天是开学第一天。 称之为first_day_of_school。 然后,假设学校从星期一开始上课:
first_day_of_school
day_of_school = day_of_year - first_day_of_school week_of_school = day_of_school // 7 day_of_week = day_of_school % 7 # 0 means Monday, European style day_of_term = week_of_school * 5 + day_of_week class_index = day_of_term % 6
现在class_index是 [0, 5] 中的数字告诉你这一天要参加哪组课程。
class_index
您可能需要根据假期进行调整,例如,如果周五假期意味着周五的课程不会跳过,而是转移到周一。为此,您需要适当的工作日算术,这可以使用 NumPy 或其他库轻松高效地完成,或者您可以直接硬编码假期列表并强制执行,因为一个学期只有几个月。