- PVSM.RU - https://www.pvsm.ru -
В предыдущей части [1] были проанализированы сообщения пользователей этого сайта, что вызвало достаточно оживленную дискуссию на тему различных параметров (числа сообщений, рейтинга, «кармы» и пр). Таких вопросов накопилось достаточно, чтобы сделать вторую часть.

Тех кому интересно, какова длина самой большой дискуссии в комментариях за этот год, какая может быть максимальная и минимальная «карма» у пользователей, и другая статистика, прошу под кат.
Для начала, пришлось дополнить парсер, чтобы он собирал больше данных. Информация о рейтинге сообщений и позиция сообщений в треде уже есть в HTML, а вот чтобы получить «карму» пользователя, пришлось делать дополнительный запрос. Разумеется, значения кешировались, чтобы для одного и того же пользователя не запрашивать данные много раз.
Обновленный датасет теперь выглядит так (ники пользователей убраны):
https://habr.com/ru/post/322900/,comment_19707920,comment_19706258,UserXXXX,karma:112.2,answers:1,2019-02-04 20:26:00,rating:1,up:1,down:0,А какие там могут быть правила?
https://habr.com/ru/company/mailru/blog/351212/,comment_19794710,comment_19794310,UserXXXX,karma:-10.0,answers:1,2019-02-23 18:16:00,rating:3,up:5,down:-2,Теперь понятно откуда взяли Стену для Девергента
...
Из дополнительных полей, было добавлено поле answers (количество ответов), «карма» юзера, а также положительные и отрицательные оценки.
Функция получения «кармы» по нику пользователя, к примеру, выглядит так:
def get_karma(user: str):
data_html = get_as_str("https://habr.com/ru/users/%s/" % user)
karma = data_html.find_between('info/help/karma/', '</a>').find_between('stacked-counter__value', '/div>').find_between('>', '<').replace(",", ".").replace('–', '-')
return float(karma) if len(karma) > 0 else 0.0
Как можно видеть, все довольно просто, никакого rocket science. Отдельно стоит поблагодарить программистов Хабра за понятный и удобный для парсинга HTML код.
Размер получившегося CSV-файла за этот 2019 год составил 334МБайт. Можно приступать к анализу. Перед началом напомню, что все опубликованные данные являются открытыми и общедоступными, они также индексируются поисковыми системами. Никакой инсайдерской информации у меня нет, все взято из страниц этого сайта.
Как показала предыдущая часть, «кармические вопросы» вызывают наибольший интерес, так что начнем с неё. Как известно, «карма» является атрибутом любого активного пользователя этого сайта, участники могут по своему усмотрению повышать или понижать её. Скажу честно, я никогда не вдавался в вопросы, как реально это работает и какие ограничения дает, так что просто приведу данные, без особых комментариев.
Всего на сайте на момент сбора рейтинга, 25109 пользователей — это те, кто хоть раз оставил хоть один комментарий. Из них нулевую карму имеют 9973 пользователей (39%). Положительную карму имеют 12346 пользователей (49%), из них карму <=4 имеют 5384 пользователя (21%), а карму >= 40 (этот уровень позволяет участвовать в «программе поощрения» и получать оплату за статьи) имеет 1522 пользователя (6%). Негативную карму имеют 2790 пользователей (11%).
Графически основная часть распределения выглядит так:

По вертикали — число пользователей с данной кармой. График обрезан сверху, т.к. пользователей с нулевой кармой максимум (9973 против 2570 с «кармой» 1). «Заминусованных» пользователей не так уж и мало, но все же график смещен в плюс, и это радует. Как «высоко» и «низко» может быть карма?
Топ-10 по рейтингу кармы занимают Zelenyikot [2] (+1509.2), Milfgard [3] (+1471.0), PatientZero [4] (+986.0), Boomburum [5] (+881.9), ValdikSS [6] (+873.5), alizar [7] (+837.5), tangro [8] (+802.5), lozga [9] (+764.7), DIHALT [10] (696.1) и Tiberius [11] (+653.0). Думаю, их можно поздравить — good job, dudes :) Если я кого-то упустил — пишите в личные сообщения, добавлю вручную.
Антитоп-10 по карме занимают… нет, пожалуй их ники я приводить не буду чтобы не делать таким юзерам лишней «рекламы», кому интересно, могут вбить данные из скриншота под спойлером. Разумеется, негативная карма на сайте лишь говорит о том, что человек выражает непопулярное на этом сайте мнение, и ничего не говорит о его личных качествах, так что попавшим в «антитоп» просьба не обижаться.
В сообщениях тоже можно найти немало интересного.
Топ-5 по длине занимают сообщения длиной 26 [12], 17 [13], 16 [14], 15 [15] и 14 [16] КБайт соответственно.
Интересно посмотреть на распределение в графическом виде:

Как можно видеть, пик приходится на сообщения около 100 символов.
Самые положительно оцененные сообщения: +218 [17], +144 [18], +141 [19], +133 [20] и +124 [21].
Самые отрицательно оцененные сообщения: -248 [22], -170 [23], -163 [24], -131 [25] и -114 [26].
Интересно, что распределение количества сообщений по набранному рейтингу примерно похоже на распределение «кармы» — есть как положительно, так и отрицательно оцененные сообщения, но «положительных» все же больше. Что опять же, не может не радовать.
Следующим интересным вопросом было нахождение наиболее длинного треда среди сообщений. Сделать это оказалось довольно просто — каждое сообщение в HTML имеет уникальный идентификатор, также есть параметр data-parent_id, остальное, как говорится, дело техники.
Итак, самые длинные сра обсуждения 2019 года: 619 ответов [27], 618 ответов [28], 614 ответов [29], 588 ответов [30] и 556 ответов [31]. Любопытно, что 4 из 5 сообщений, вызвавших эти треды, написаны юзерами с кармой меньше -20.
Сгруппируем комментарии по числу ответов на них:

По вертикали — число сообщений за этот год. Большая часть комментариев (41% или 183000) остались вообще без ответа, 75тыс комментариев имеют 1 ответ, дальнейшее распределение видно на картинке.
На этом я закончу тему «хабрастатистики» до января — в конце года будет опубликован финальный рейтинг лучших статей 2019 года, ну и может найдутся еще какие-то интересные закономерности.
Надеюсь, было интересно. Если я кого-то забыл — пишите, поправлю.
Автор: DmitrySpb79
Источник [32]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/python/330623
Ссылки в тексте:
[1] предыдущей части: https://habr.com/ru/post/467653/
[2] Zelenyikot: https://habr.com/ru/users/zelenyikot/
[3] Milfgard: https://habr.com/ru/users/milfgard/
[4] PatientZero: https://habr.com/ru/users/patientzero/
[5] Boomburum: https://habr.com/ru/users/boomburum/
[6] ValdikSS: https://habr.com/ru/users/valdikss/
[7] alizar: https://habr.com/ru/users/alizar/
[8] tangro: https://habr.com/ru/users/tangro/
[9] lozga: https://habr.com/ru/users/lozga/
[10] DIHALT: https://habr.com/ru/users/dihalt/
[11] Tiberius: https://habr.com/ru/users/tiberius/
[12] 26: https://habr.com/ru/post/456222/#comment_20297424
[13] 17: https://habr.com/ru/company/russian_rehab_industry/blog/454728/#comment_20264545
[14] 16: https://habr.com/ru/post/450478/#comment_20112270
[15] 15: https://habr.com/ru/company/galssoftware/blog/464963/#comment_20553567
[16] 14: https://habr.com/ru/post/447328/#comment_20078064
[17] +218: https://habr.com/ru/post/451898/#comment_20155750
[18] +144: https://habr.com/ru/company/medium-isp/blog/461979/#comment_20455785
[19] +141: https://habr.com/ru/news/t/444134/#comment_19901404
[20] +133: https://habr.com/ru/post/443694/#comment_19883210
[21] +124: https://habr.com/ru/company/dodopizzaio/blog/449256/#comment_20076590
[22] -248: https://habr.com/ru/company/medium-isp/blog/461979/#comment_20455667
[23] -170: https://habr.com/ru/post/438514/#comment_19696172
[24] -163: https://habr.com/ru/post/457400/#comment_20325568
[25] -131: https://habr.com/ru/post/451898/#comment_20156086
[26] -114: https://habr.com/ru/company/tm/blog/437072/#comment_19645144
[27] 619 ответов: https://habr.com/ru/post/439600/#comment_19733390
[28] 618 ответов: https://habr.com/ru/post/441004/#comment_19778880
[29] 614 ответов: https://habr.com/ru/post/438650/#comment_19701558
[30] 588 ответов: https://habr.com/ru/post/438650/#comment_19701618
[31] 556 ответов: https://habr.com/ru/post/439600/#comment_19733410
[32] Источник: https://habr.com/ru/post/467951/?utm_campaign=467951&utm_source=habrahabr&utm_medium=rss
Нажмите здесь для печати.