Skip to content

Stufinite/CampassCrawler

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

99 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CampassCrawler (大學課程爬蟲)Build Status

單元測試:

cd UCrawler; python test.py 學校名稱

執行指令:

  1. 中科:scrapy crawl NUTC -o NUTC.json -t json
  2. 中山:scrapy crawl NSYSU -o NSYSU.json -t json

Getting Started

Prerequisities

  1. OS:Ubuntu / OSX would be nice
  2. environment:need python3
  • Linux:sudo apt-get update; sudo apt-get install; python3 python3-dev
  • OSX:brew install python3

Installing

  1. 使用虛擬環境:
  2. 創建一個虛擬環境:virtualenv venv
  3. 啟動方法
    1. for Linux:. venv/bin/activate
    2. for Windows:venv\Scripts\activate
  4. pip install -r requirements.txt

Schema

  1. 建立一份課程類別的清單。api會以此清單做課程的分類
    類別固定這三種:通識類, 體育類, 其他類
    此變數定義在spider的class variable裏面
    參考中科大的scrapy範例
class NutcSpider(scrapy.Spider):
    name = '某某學校'
    allowed_domains = [某某學校網址]


    genra = {
        '通識':'通識類',
        '體育類':'體育類',
        '語言':'其他類',
        'xxxx':'通識類',
        'yyyy':'體育類',
        'zzzz師培':'其他類',
        'zzzz軍訓':'其他類',
        ...
    }

    def start_requests(self):
        ....
        ....
        ....
  1. 需要欄位:

    • 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'], '大學部')
  2. 爬蟲輸出 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. 例外:  1. 欄位為空值:統一填 None

Built With

  • python3.5

Contributors

  • 邱冠喻 - Initial work - Pastleo
  • 戴均民 - Initial work - taichunmin
  • 黃川哲 - Initial work - CJHwong
  • 張泰瑋 david
  • 王選仲
  • 蔡鬆鬆

Acknowledgments

  • 感謝colorgy,部份爬蟲參考自他們的open source
  • 感謝中興大學計資中心提供協助
  • 感謝黃川哲大大開的坑,讓學弟學了不少的Python,學長們的 code 也讓我受益良多~
  • 感謝Pastleo大大開的坑,讓學弟學了不少的Python,學長們的 code 也讓我受益良多~

License

This project is licensed under the GNU 3.0 License - see the LICENSE.md file for details