[趣味, 独り言] |> IO.inspect()

誰かに見てもらえたらうれしい

高専シラバスから評価割合を抜き出してみた

テストのたびにシラバス見るの大変じゃない?

この前授業で授業の科目の一覧が欲しくなりまして、どっかにあるかと調べたのですがなかったので、Rubyでnokogiriを使ってスクレイピングしました

github.com

そのときに、シラバスから評価割合抜き出したら意外と需要あるんじゃねと思いましてさっそくとりかかりました。

開発方法は電車駆動開発(主な開発場所が学校の帰りの電車)だったので10日もかかりました

無事完成しました。

github.com

まだ並列化してないのでパフォーマンスは最悪です。1学科やるだけで30秒かかります。もしこのファイルをそのまま動かそうものなら1学科30秒×1高専7学科(専攻科も含む)×51高専で計算すると178分30秒かかります。(記事執筆時点で実行中)

もしCSVが欲しければこれを動かすか連絡してください。

どんな感じで進んでいくのか

せっかく書いたので説明します。

このページがスタートです。

高専の一覧

https://syllabus.kosen-k.go.jp/Pages/PublicSchools/

このページには各高専のリンクがあるのでnokogiriで取得します。ただしなぜかやたらと非表示に設定されているリンクがあるのでそこは除去します。

非表示の例
style="display: none"が非表示の部分

ちなみに非表示になっているところにはこんなのがあります。

ikiikinyuusankin.hatenablog.com

取得したリンク先には学科別のリンクがあるので取得します。リンクだけで取得するとカリキュラムのリンクも取得してしまうのでうまいこと除去します。

学科の一覧

学科別のリンク先には科目別のリンクがあるので取得します。このとき厄介だったのが新居浜高専の科目のリンクにhttps://syllabus.kosen-k.go.jp/Pages/PublicSyllabus?school_id=40&department_id=13&subject_code=104610(前期)&year=2018というのがあって、これを取得すると(前期)の部分がutf-8文字コードででてくるので最初の通しで止まりました。この部分は文字コードを文字に直すことで解決しました。

科目の一覧と問題のリンク

最後に評価割合を2次元配列に格納してCSVに出力します。これで1教科の評価割合が取得できました。

評価割合の表
評価割合の表

これを全科目、全学科、全高専で行うことで取得しています。

感想

疲れた。新居浜高専を俺は許さない。

あとクロールを行うにあたってrobot.txtに従うのはマナーですが、そもそもrobot.txtがなかったので知るかって感じです。まぁ高専だし大丈夫でしょ。

そのうち先生に聞いてみます。

今後の展開

CSVをダウンロードできるサイトを作ります。以上

では