Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/tonytonyjan/past-paper-crawlers


https://github.com/tonytonyjan/past-paper-crawlers

Last synced: about 2 months ago
JSON representation

Awesome Lists containing this project

README

        

[考古題世界]: http://past-paper.com
[文件]: http://goo.gl/FUBMO
[SFTP]: http://goo.gl/UZee5
[大兜]: mailto:[email protected]

## 考古題爬蟲黑克松
本專案是為了[考古題世界]而生,詳情請查閱此[文件]。

## 注意事項

### 規範

* 本 repository 只接受程式碼,請不要把爬完到的考古題檔案推上來,以免後來參與的人 clone 到海枯石爛。
* 爬完的結果請放到 [SFTP](權限請跟[大兜]索取)。

### 檔案結構

一個學校一個資料夾,以英文縮寫命名。內含一個 [past_papers.json](https://gist.github.com/tonytonyjan/4c308f311f59439cc826) 檔案。

NCTU
├── files
│ ├── cnlz1801.pdf
│ ├── cnlz1803.pdf
│ ├── ……
│ ├── ece1201.pdf
│ └── ece1202.pdf
└── past_papers.json

#### past_papers.json

past_papers.json 為一個 array,內含多個 object:

{
"school": "國立交通大學",
"department": "電機工程學系",
"program": null,
"subject": "線性代數與機率",
"year": 2012,
"exam_type": ”入學考”, // 5/25 新增
"file_paths": [
"files/eed1211.pdf"
]
}

* `program`:OOXX 組(例:資訊工程學系網路與多媒體組,其中「網路與多媒體組」為 `program`)
* `file_paths`:為相對路徑。
* `exam_type`:(入學考 | 轉學考),這次爬蟲應該只有入學、轉學兩者,如果有發現其他的種類,請在[文件]做討論。

## 建議流程

1. clone 本專案。

$ git clone [email protected]:tonytonyjan/past-paper-crawlers.git

2. 新增一個資料夾,開始寫爬蟲,並在資料夾下產生 `past_papers.json` 以及考古題檔案,以 `NCTU` 為例:

$ mkdir NCTU
$ cd NCTU
$ vim crawler.rb
$ (edit)
$ ruby crawler.rb # 啪啪啪

## 如何跑測試

1. 安裝 Ruby。
2. 安裝 rspec。

$ gem install rspec

3. 在 repository 目錄下。
* 測試一個學校:

$ SCHOOL_DIRS=NCTU rspec
* 測試多個學校(用冒號 `:` 隔開):

$ SCHOOL_DIRS=NCTU:NTU:NTHU:NCKU rspec
* 測試全部學校:

$ rspec

## 提示

### 取出系所和組別的表達式

`/(.*[班系所])(.*組)/`
例如:資訊工程學系網路與多媒體組,會被拆成「資訊工程學系」和「網路與多媒體組」