カレーの恩返し

おいしいのでオススメ。

呉高専HPをスクレイピングしてワードクラウドを作った

これは呉高専エンジニア勉強会Advent Calendar 2017の15日目の記事です。

こんにちは。呉高専OB1年目の@euglena1215です。

AdventCalendar 4記事目になります。
あと6,7記事書かないと埋まらないだろうと思っていたのですが、色々な人に手伝ってもらって気付いたら全部埋まっていました!
もう感謝感激です。

f:id:euglena1215:20171215031355p:plain

こんな感じになりました。
高専はものづくりと国際交流を頑張ってるみたいです。

 

 

で、終わってもいいんですがちょこっと作り方をまとめてみます。

ソースコードはこちらになります。
GitHub - kure-kosen/kurekosen_wordcloud

基本的にはこのページを参考に(ほぼパクリ)しました。 qiita.com

!!!注意!!!

今回はrobots.txtを目視で確認したところ404が返ってきたのでスクレイピングしても問題ないと判断し、プログラム上ではrobots.txtのチェック処理を入れていません。
他のサイトへスクレイピングを行う際はrobots.txtを確認した上で実行してください。
また、リクエストの間隔を1秒以上空けるのがマナーなので気をつけましょう。

処理の流れ

  1. python get_url.pyhttps://www.kure-nct.ac.jp/ からアクセスできる呉高専ドメインのhtmlファイルのURLを全て取得し、url.txtに書き出します。
    イメージとしては、アクセスしていないURLのスタックとアクセス済みのURLのスタックを用意してアクセスしていないURLのスタックから済みのスタックへと移していきアクセスしていないURLのスタックが空になった時点で済みのスタックを書き出す感じです。

  2. python get_wordlist.py でurl.txtを元にhtmlファイル内の必要なテキストに形態素解析をかけて単語ずつに切り分けURLごとのファイルに書き出します。

  3. python wordcloud.pyで2. で書き出された単語を元にワードクラウドを生成します。
    2.で書き出されたファイルのファイル名はURLとほぼ同じものにしてあるので、読み込むファイル名を正規表現で絞ってやれば今年の高専日誌の情報のみなど任意の条件からワードクラウドを生成することができます。


最後に面白いと思った結果を紹介します。

f:id:euglena1215:20171215031802p:plain 2015年の高専日誌から抽出したワードクラウド

f:id:euglena1215:20171215031816p:plain 2016年の高専日誌から抽出したワードクラウド

f:id:euglena1215:20171215031832p:plain 2017年の高専日誌から抽出したワードクラウド

 

例年高専日誌は部活動やコンテストの結果を載せることが多いので「大会」や「チーム」といった単語が多いのですが、今年は「大会」と同じくらいの文字サイズで「イベント」がありました。

これはインキュベーションワークやその他の活動によって色々なところでイベントがたくさん開催されるようになった裏付けなのではないでしょうか。

ワードクラウドを使って1年を振り返るのもなかなかいいですね。