【スクレイピング】高専シラバス結合プロジェクト

高専卒業生の約半数が大学に進学する時代となり、高専の「シラバス」というものはとても重要です。なぜなら、「シラバス」に基づき大学における単位が認定されるからです。

技科大などでは、入学と同時に規定の単位数が認定される場合もありますが、一部の大学では、先生とバトルを繰り広げることにより単位を勝ち取る必要がある場合もあります。

さて、肝心のバトルの材料ともなる「シラバス」はこちらのサイトで公開されていますが、一括DLという機能が無く(あるにはあるけど使いにくい)、場合によっては100回くらい人の手によってPDFをDLする作業をする必要が出てきます。

そうだ。退屈なことは、pythonにやらせよう。

スポンサーリンク

システムの概要

このシステムは、自分が入学してから卒業するまでの、全授業のシラバスを、スクレイピングを用いてダウンロードし、学年ごと1つのファイルにまとめる機能を有したものです。

クローリングとスクレイピング

クローリングとスクレイピングというものは、ネットサーフィンを、人の手ではなく機械の手により行うことです。

過度なアクセスはサーバー側の大きな負担となり、場合によっては違法であり、他の利用者の迷惑になるのでやめましょう。このサイトで公開しているプログラムは安全(合法)な設計となっています。(ただし、とある部分を変えた場合を除く)

システムの使い方

①自分の学校IDと学科IDを知ろう

こちら(https://syllabus.kosen-k.go.jp/Pages/PublicSchools?lang=ja)のサイトにアクセスしてください。

そのうえで、自分の学校をクリックしてください。

そうすると、こんな感じのページに飛びます。

そうしたら、自分の学科の「本年度の開講科目一覧」をクリックします。


このページの画面上側のURLに注目します。


このページの場合、

https://syllabus.kosen-k.go.jp/Pages/PublicSubjects?school_id=01&department_id=12&year=2020&lang=ja

このように書いてあります。

この中で、「school_id」と「department_id」の横に書いてある2桁の番号を記憶しておいてください。

上の例の場合、school_idは、01で、department_idは12となっていますね。

②次は、Google Colabを開く

Googleアカウントを持っていない場合、Googleアカウントを先に作成してください。


Googleにログインした状態で、こちらのURLにアクセスしてください。

そうすると、このような画面が出てきます。

③情報の入力

最後に、学校と学科、取得したいシラバスの年度を入力します。

プログラム上から、20行目くらいの、

school_id = "01"
department_id = "12"
start_year = "2020"
end_year = "2020"
my_year = "2020"

この部分をいじります。

school_idと、department_idは、①で取得した番号を2桁入力してください。(1桁の場合は0を忘れずに)

そのうえで、start_yearとend_yearは、シラバスを取得したい期間の最初の年度と最後の年度を入力してください。上の場合は最初の年度が2020年度で、最後の年度が2020年度です。つまり2020年度のみ取得する設定になっています。

my_yearは、入学した年度を入力してください。上の場合は2020年度入学生すなわちkosen20sのシラバスを取得する設定になっています。

一応例示しておきます。

school_id が98の、department_idが99の学科で、2018年度から2020年度までのシラバスを取得したい場合で、2017年度に入学した人の場合、

school_id = "98"
department_id = "99"
start_year = "2018"
end_year = "2020"
my_year = "2017"

と設定する必要があります。この場合、2年次から4年次のシラバスがDLされます。

④実行

最後に、実行してシラバスをDLします。

画面上側左側の再生ボタンみたいなボタンを押してください。

約5分程度で実行が完了します。

実行時に警告が出る場合がありますが、無視していただいて構いません。
(このブログを信じれない場合は話が別かもですが...)

⑤ダウンロード

実行が完了したら、以下の画像のように、ファイルをDLしてください。


まず、画面左側のファイルマークをクリックし、ファイルの再読み込みを行い、そうすると、「all_syllabus」フォルダ内に、年度ごとのシラバスのファイルがあります。

各ファイルを右クリックして、「ダウンロード」を押し、ローカルに落としてもらってから、印刷などをしてご活用ください。

公認パートナーの募集

各高専に公認パートナーを募集します。

公認パートナーの仕事は、例としてこんな感じのページを作ってもらうことです。

要は、各高専のシラバスを、上に書いてあるやり方でダウンロードして、そのダウンロードしたシラバスを、各高専のカリキュラムに適した形でまとめて、誰でも一括ダウンロードできる環境にしてほしいということです

公認パートナーになりたいという方は、当HPのお問い合わせフォームorTwitterDM(推奨)にてお知らせください。

誰でも閲覧ができる状態であれば、つまり、サイトへのアクセスを有料化or会員限定化をしない限り、アドセンスなどの広告をつけていただいて構いません。

もし、公認パートナーになりたいけど、サーバーは持っていないという方は、Google Blogger(無料)を利用してもらうか、TwitterDM で言っていただければ、私のブログ(このサイト)を使っていただくことも可能です。

また、公認パートナーでない方が、当プログラムを用いてシラバスを結合したものをネット上でDLできるサイトを構築することを制限するものではありません。

著作権表示

シラバス自体は、著作権法に定める著作物の定義である「思想又は感情を創作的に表現したものであつて、文芸、学術、美術又は音楽の範囲に属するものをいう。」に該当しないと考えることから、シラバスは著作物としての保護を受ける物でないと考えています。

プログラム自体、そこまで高度なものではありませんが、プログラムの著作権はasyano.jpが保有しています。このプログラムを営利目的で利用していただいてもかまいませんが、asyano.jp及び下記参考元が著作者である旨を表示をしてください。

また、参考元が各種権利を有する場合もありますので、ご注意ください。

専攻科など

専攻科のシラバスを一括DLする機会はめったにないと思いますが、一応書いておくと、専攻科の場合、入学年度は、本科入学年度をmy_yearに登録する必要があります。

参考元

【Python】BeautifulSoupでhrefの値を取得する【スクレイピング】

Pythonで文字列を分割(区切り文字、改行、正規表現、文字数)

【初心者向け】PythonでWebスクレイピングをやってみる

Python, PyPDF2でPDFを結合・分割(ファイル全体・個別ページ)

Python3入門 フォルダ内のファイル一覧を取得する方法

まとめ

いかがでしたでしょうか。シラバスを一括DLできるプログラムを作ってみました。

編入体験記を見ていたりすると、大学によってはシラバスをすべてDLして印刷してたりしてて、大変だなぁと思い、このプログラムを(もしかしたら編入するかもしれない自分のためにも)作りました。

もしご意見や、プログラムのココを変えた方が良いよとかのアドバイスは、TwitterDMでお知らせください。

注意喚起

プログラムを見る人が見れば、どこをいじれば通常5分程度かかるDLが1分程度で終わるようになるか分かると思います。マジでやめてください。

どうでもいいけど、この高専WEBシラバスのサイト、robots.txtが無いのが謎。

コメント