原則上盡可能模仿 Excel 檔中的欄位,Excel 檔中沒有但是有包含在輸出中的欄位會加上
PRIVATE____
標示,例如 PRIVATE____ceiba
。時間教室欄位 clsrom
因為原有的 Excel 檔格式不易使用,所以改成 (星期, 節課, 教室)
。注意 nol 上的
資料常常有許多意外狀況,所有欄位都有可能是 null
或是空字串,甚至連星期和節課
都可能空白。也可能有些 nol 頁面裡的課程不滿 15 項,這時候會直接用
{'not_found': True}
表示。
注意節次代號在 104 學年度有修改過,因此 104-1 的 ['8', '9', '10']
會
對應到 103-2 的 ['7', '8', '9']
。103 學年度以前並不存在第 10 節課,
如果有出現會自動對應為第 A 節課。
nol_app.py 學期 開始位置 > 輸出檔案
-
第一個參數是 nol 上的學期名稱,像是 103-2、104-1,省略則表示是目前這學期。
-
第二個參數是用來指定從第幾筆課程資料開始下載,省略表示從頭開始。
-
第三個參數可有可無,有加用 pprint 輸出,不加則用 json 輸出。
-
進度列會顯示在 stderr。
-
程式的輸出會直接送到 stdout,所以記得要將 stdout 重導向到檔案。
-
由於 nol 有時候會故障,所以遇到錯誤會不斷重試。如果使用時發現 nol 網站正常,但是
nol_app.py
一直印出重複的錯誤訊息,那應該就是 bug,請記得回報!
from nol_lib import NolCrawler
-
static methods
-
get_semesters()
: 取得可用的學期清單。 -
get_default_semester()
: 取得目前這學期的名稱。 -
get_course_count("103-2")
: 取得這個學期的課程數量。
-
-
constructor
-
NolCrawler("103-2")
: 必須提供學期名稱,有需要可加入ceiba=False
關閉 CEIBA 網站查詢功能以加快下載速度或是在 CEIBA 關站時使用。
-
-
member methods
-
get_course(0)
: 下載一筆課程資料,實際上則是一次下載一整頁的資料並存入內部的 cache,之後取得同一頁的資料會直接從 cache 中取得。 -
flush_cache(0)
: 清除指定的 cache 資料。 -
flush_cache_all()
: 清空整個 cache。
-