LoginSignup
5
1

More than 5 years have passed since last update.

今年1番期待のアドベントカレンダーは!?

Last updated at Posted at 2018-11-28

アドベントカレンダー多すぎ問題

今年もアドベントカレンダーの季節になってきましたが…
アドベントカレンダー多すぎません?
全部は流石に見れないですよね…
そこで期待できそうなアドベントカレンダーを見たいので、どのアドベントカレンダーが期待できるか見てみましょう。
あと僕の作った闇の魔術に対する防衛術が一番人気そうだから調べたいってのもある
時間があったら追加でいろいろ書きます。

どうやって調べるよう…

(こんなの調べても)ご褒美はないんだぞ?
とりあえず
$購読者が多い=期待されている$
とかいう、ガバガバ論理で行きます

どうやってデータ集めよう…

スクレイピングします、適当にスクレイピングのコードを書きます。
5分で書いたので汚いコードなのは、お兄さん許して亭ゆるして
ただいっぱいリクエストを投げると、サーバー壊れちゃぁぅ↑のでスリープはちゃんと入れます。とりあえず5秒あったらいいでしょ

import json
import requests
from bs4 import BeautifulSoup
from time import sleep

now_pos = 1
ad_dict = {}
while True:
    url = "https://qiita.com/advent-calendar/2018/calendars?page="+str(now_pos)
    html = requests.get(url).text
    bsObj = BeautifulSoup(html, "lxml")
    td = bsObj.find("tbody")
    if len(td.find_all("a")) == 0:
        break
    sleep(5)
    for a in td.find_all("a"):
        if "/advent-calendar/2018/" in a.get("href"):
            cal = requests.get("https://qiita.com" + a.get("href")).text
            cal_bsObj = BeautifulSoup(cal, "lxml")
            title = cal_bsObj.find("title").contents[0].replace("Advent Calendar 2018 - Qiita", "").strip()
            num = cal_bsObj.find("div", {"title":"Subscribers"})
            ad_dict[title] = num.contents[1]
            sleep(5)
    print(now_pos, end="\r")
    now_pos += 1
with open("qiita_advent_calendar_subscriber.json", "w", encoding="utf-16") as file:
    json.dump(ad_dict, file, indent=4)

このコードを動かすとqiita_advent_calendar_subscriber.jsonに

{
    "カレンダー名":"購読者数",
              ︙
}

という形で格納されます。
高読者数が整数じゃなくて文字列なのは変換し忘れていただけです、僕のせいではありません。
ゴルゴムか乾巧って奴の仕業なんだ。

でけた

早速ランキング形式で見ましょう。とりあえず以下のコードを動かします。

import json

with open("qiita_advent_calendar_subscriber.json", "r", encoding="utf-16") as file:
    data = json.load(file)
data_list = [[key, int(data[key])] for key in data]
data_list.sort(key=lambda x: x[1])
data_list.reverse()
for rank in range(15):
    print("%d位"%(rank+1), data_list[rank][0], ":", data_list[rank][1])

さっきのファイルをロードしてソートして表示するだけなので簡単ですね。
では早速結果です!!

1位 闇の魔術に対する防衛術 : 286
2位 Visual Studio Code : 278
3位 Docker : 249
4位 Vue.js : 234
5位 Vue.js #2 : 181
6位 JavaScript : 166
7位 Vim : 166
8位 AWS : 162
9位 Python : 162
10位 Go : 160
11位 Kubernetes : 153
12位 Google Cloud Platform その1 : 144
13位 Nuxt.js : 140
14位 GraphQL : 139
15位 Firebase : 139

やったぜ。
無事、闇の魔術に対する防衛術が一番期待されてる感じですね(傲慢)
あと2位がVSCodeだったのは意外でした。
4,5位のVueもすごいですね…合計だと1位かもしれません。
まあ単独1位は闇の魔術に対する防衛術ですが

まとめ

みんな闇技術に苦しめられてそう。

みんな、金髪ヤサグレ少女ってとってもいいぞ。早く戻ってこい
金髪ヤサグレ少女はとてもいいぞ、みんな、早く戻ってこーい!!!

5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1