cd UCrawler; python test.py 學校名稱
- 中科:
scrapy crawl NUTC -o NUTC.json -t json
- 中山:
scrapy crawl NSYSU -o NSYSU.json -t json
- OS:Ubuntu / OSX would be nice
- environment:need python3
- Linux:
sudo apt-get update; sudo apt-get install; python3 python3-dev
- OSX:
brew install python3
- 使用虛擬環境:
- 創建一個虛擬環境:
virtualenv venv
- 啟動方法
- for Linux:
. venv/bin/activate
- for Windows:
venv\Scripts\activate
- for Linux:
pip install -r requirements.txt
- 建立一份課程類別的清單。api會以此清單做課程的分類
類別固定這三種:通識類, 體育類, 其他類
此變數定義在spider的class variable裏面
參考中科大的scrapy範例
class NutcSpider(scrapy.Spider):
name = '某某學校'
allowed_domains = [某某學校網址]
genra = {
'通識':'通識類',
'體育類':'體育類',
'語言':'其他類',
'xxxx':'通識類',
'yyyy':'體育類',
'zzzz師培':'其他類',
'zzzz軍訓':'其他類',
...
}
def start_requests(self):
....
....
....
-
需要欄位:
- department: 開課系所
- for_dept: 上課系所
- grade: 年級
- title_parsed: 課名
- time: 上課時間
- credits: 學分
- obligatory_tf: 必修或選修
- professor: 教授
- location: 上課地點
- code: 課程id
- note: 備註
- campus: 校區
- discipline: 通識領域類別 e.q. 自然科學領域, 社會科學領域...
- category: 課程類別,會根據
1.的genra
變數,去判斷,把體育類的課程分類給體育類
,軍訓、師培課程分為其他類
* ,資工、資管、法律等正常系所的課程,分為大學部
- 程式碼統一這樣寫:
courseItem['category'] = self.genra.get(courseItem['department'], '大學部')
- 程式碼統一這樣寫:
-
爬蟲輸出 JSON 格式: 參考網址
{ "note": "---", "for_dept": "通識", "title": "心理學與自我成長", "time": [ { "day": 1, "time": [ 5, 6 ] } ],
"professor": "楊淳斐、林清標", "location": [ "(3304)" ], "campus": "NUTC", "grade": "三A", "department": "通識", "category": "通識類", "code": "D19009", "obligatory_tf": false, "credits": 2.0, "discipline": "社會科學領域" } ```
- 例外:
1. 欄位為空值:統一填
None
- python3.5
- 邱冠喻 - Initial work - Pastleo
- 戴均民 - Initial work - taichunmin
- 黃川哲 - Initial work - CJHwong
- 張泰瑋 david
- 王選仲
- 蔡鬆鬆
- 感謝colorgy,部份爬蟲參考自他們的open source
- 感謝中興大學計資中心提供協助
- 感謝黃川哲大大開的坑,讓學弟學了不少的Python,學長們的 code 也讓我受益良多~
- 感謝Pastleo大大開的坑,讓學弟學了不少的Python,學長們的 code 也讓我受益良多~
This project is licensed under the GNU 3.0 License - see the LICENSE.md file for details