Japan Contestをクロールしてみんなの当選回数を調べてみた

経緯

私は今年の4月からウェブ系の企業に勤めているのだが、先日こういうことがあった。
先輩「ウェブサイトのクローリングってしたことある?」
私「ないです…」

ので、何か簡単なものでも、ゴールデンウィーク期間中にやってみることにした。
身近な題材としてJapan Contest (ルービックキューブのオンライン選手権)を選び、
結果ページをクロールして参加者の当選回数 (当選すると上位でなくても賞品がもらえる仕組みがある)を調べてみることにした。

ソースコード

https://github.com/nikken7101/jc-crawling

実装

  • Python3を使った
  • pythonで動作するHTMLパーサであるBeautifulSoup4を使った
  • for文で全ての結果ページのURLを生成し、urlopenでopenして、BeautifulSoup4で<tr>タグの中身を取ってきて、正規表現で名前を抽出した
  • あたりの人には、atari.pngという画像が付いているので、findメソッドで”atari.png”という文字列が含まれているか調べた
  • 参加回数と当選回数を抽出して、当選確率とともにpandasのDataFrameに格納し、csvに出力した

結果

2015年5月7日現在の結果を載せます。

全結果

https://github.com/nikken7101/jc-crawling/blob/master/results.csv

ご自分の当選回数を知りたい人は、このページでページ内検索していただければよいかと思います。
ちなみに私 (にっけん) は、38回参加、1回当選、当選確率2.63%でした。

抜粋

参加回数が多い人トップ10

参加回数が多い人を調べました。
今までのコンテストの回数は

  • 2x2x2: 240回
  • 3x3x3: 240回
  • 3x3x3OH: 240回
  • 4x4x4: 266回
  • 5x5x5: 240回

で、合計 1,226回です。
こだまさん (Japan Contestの中の人) は皆勤ですね。
中の人は当選しないようになっているみたいですね。

参加回数が多い人トップ10

参加回数が多い人トップ10

 

当選回数が多い人トップ10

当選回数が多い人を調べました

当選回数が多い人トップ10

当選回数が多い人トップ10


当選確率が高い人トップ10 (ただし、参加回数>100)

ラッキーな人を調べました。
参加回数が少ないと面白くないかと思い参加回数が100回を超えている人に限定してみました。
ちなみに、参加回数1回、当選回数1回で当選確率100%の人が1名いました。

当選確率が高い人トップ10

当選確率が高い人トップ10

 

当選確率が低い人トップ10 (ただし、参加回数>100 かつ 当選確率  > 0)

アンラッキーな人を調べました。
こちらも、参加回数が100回を超えている人に絞ってみました。
中の人は当選しないようになっているようなので、当選回数0回の人も除きました。
白さんは参加回数多いのに、当選確率1%未満とめっちゃアンラッキーみたいですね。
さすがです (失礼)。

当選確率が低い人トップ10

当選確率が低い人トップ10

 

おわりに

勉強のために、Japan Contestをクロールしてみんなの当選回数を調べてみました。
これで、先輩に「ウェブサイトのクローリングってしたことある?」と聞かれた時に
「はい。あります!(ドヤ」と言えますね (言えるのか?)。

やり方は適当にググってやったので、会社内でどうやっているのか今度先輩に聞いてみたいです。

これができると、データベースが公開されていないデータも使って遊べるので楽しそうです。

結果の画像はCSVをエクセルで読み込んで、並び替えとかフィルタとかで作ったが、
せっかく、pandasのデータフレームに格納したので、そっちでやったほうがかっこよかったのかもしれない。

You may also like...

コメントを残す

メールアドレスが公開されることはありません。