こんにちは。
医学部4年になると、CBT対策としてQB(クエスチョンバンク)に取り組むかと思います。
このQB、学年内での演習状況がプロットで表示されますが、現在(2020/8/23)の仕様だと、自分の演習問題数の順位が何位、等の表示がされません。
1周してしまえばカウントがカンストするのでどうせ同率1位にはなるのですが、それ以前ではやはり気になるところ。
プロットを1つ1つ上から数えるのは大変なので、自動で数え上げるスクリプトを書きました。
twitterにて「共有してほしい」との要望を頂いたので、共有します。
※当方プログラミング、githubともに始めたばかりの初心者です。コードが汚い、githubの使い方がおかしい等があるかと思いますが、ご容赦ください🙇
##■できること
あなたの演習数ランキングは 〇〇位 です!
あなたの正解率ランキングは 〇〇位 です!
あなたの昨日の演習数ランキングは 〇〇位 です!
##■大まかな仕組み
①seleniumでmediLinkアカウントにログイン、順位表のページのhtmlを取得
②BeautifulSoup4で取得したhtmlから各プロットの要素を取得
③各プロットのx座標、y座標から自分の順位を数え上げ
##■動作確認環境
・Python 3.8.1
・macOS Catalina ver.10.15.5
(2020/8/23)
※QB側のサイト表示に依存するため、時間帯によってはエラーとなってしまいます。
##■コード
https://github.com/fumiyacyrus/qb_cbt_ranking
##■使い方
####◆使用ライブラリのインストール
- selenium
- BeautifulSoup4
####◆ChromeDriverの準備
https://chromedriver.chromium.org/downloads
からお使いChromeのverに合ったドライバーをダウンロード。
場所は好きな場所でOK。
####◆コード上での設定
DRIVER_PATH = '' # ブラウザのドライバーのpath:str
''
の中に先程ダウンロードしたChromeDriverのpathを記述
type_text(email_form, '') # アカウントのemailアドレス:str
type_text(pass_form, '') # アカウントのパスワード:str
''
の中にご自身のmediLinkアカウントのメールアドレス・パスワードを記述
####◆ターミナル上
$ python3 qb_cbt_ranking.py
html取得に少し時間がかかりますが、15秒ほどで結果が表示されるかと思います。