Габрастистика: сайттың ең көп және ең аз кірген бөлімдерін зерттеу
Эй Хабр.
В алдыңғы бөлім Хабрдың трафигі негізгі параметрлерге - мақалалар санына, олардың көріністеріне және рейтингтеріне сәйкес талданды. Дегенмен, сайт бөлімдерінің танымалдылығы мәселесі зерттелмей қалды. Мұны толығырақ қарастыру және ең танымал және ең танымал емес хабтарды табу қызықты болды. Соңында, мен жаңа рейтингтерге негізделген ең жақсы мақалалардың жаңа таңдауымен аяқталатын geektimes әсерін толығырақ қарастырамын.
Оқиғаға қызығатындар үшін жалғасы қысқартылған.
Тағы бір рет еске сала кетейін, статистика мен рейтингтер ресми емес, менде инсайдерлік ақпарат жоқ. Сондай-ақ бір жерде қателеспегеніме немесе бірдеңені жіберіп алғаныма кепілдік берілмейді. Дегенмен, менің ойымша, бұл қызықты болды. Біз алдымен кодтан бастаймыз, оған қызығушылық танытпайтындар бірінші бөлімдерді өткізіп жібере алады.
Деректер жинау
Талдаушының бірінші нұсқасында тек көру саны, пікірлер және мақала рейтингтері ескерілді. Бұл қазірдің өзінде жақсы, бірақ ол сізге күрделі сұраулар жасауға мүмкіндік бермейді. Сайттың тақырыптық бөлімдерін талдаудың уақыты келді, бұл сізге өте қызықты зерттеулер жүргізуге мүмкіндік береді, мысалы, бірнеше жыл ішінде «C++» бөлімінің танымалдылығы қалай өзгергенін көріңіз.
Мақала талдаушысы жетілдірілді, енді ол мақала тиесілі хабтарды, сонымен қатар автордың лақап аты мен оның рейтингін қайтарады (мұнда да көптеген қызықты нәрселерді жасауға болады, бірақ бұл кейінірек келеді). Деректер csv файлында сақталады, ол келесідей көрінеді:
2018-12-18T12:43Z,https://habr.com/ru/post/433550/,"Мессенджер Slack — причины выбора, косяки при внедрении и особенности сервиса, облегчающие жизнь",votes:7,votesplus:8,votesmin:1,bookmarks:32,
views:8300,comments:10,user:ReDisque,karma:5,subscribers:2,hubs:productpm+soft
...
Біз сайттың негізгі тақырыптық хабтарының тізімін аламыз.
def get_as_str(link: str) -> Str:
try:
r = requests.get(link)
return Str(r.text)
except Exception as e:
return Str("")
def get_hubs():
hubs = []
for p in range(1, 12):
page_html = get_as_str("https://habr.com/ru/hubs/page%d/" % p)
# page_html = get_as_str("https://habr.com/ru/hubs/geektimes/page%d/" % p) # Geektimes
# page_html = get_as_str("https://habr.com/ru/hubs/develop/page%d/" % p) # Develop
# page_html = get_as_str("https://habr.com/ru/hubs/admin/page%d" % p) # Admin
for hub in page_html.split("media-obj media-obj_hub"):
info = Str(hub).find_between('"https://habr.com/ru/hub', 'list-snippet__tags')
if "*</span>" in info:
hub_name = info.find_between('/', '/"')
if len(hub_name) > 0 and len(hub_name) < 32:
hubs.append(hub_name)
print(hubs)
find_between функциясы мен Str класы екі тег арасындағы жолды таңдайды, мен оларды қолдандым бұрын. Тақырыптық хабтар "*" белгісімен белгіленеді, сондықтан оларды оңай бөлектеуге болады, сонымен қатар басқа санаттардың бөлімдерін алу үшін сәйкес жолдарға түсініктемелерді алып тастауға болады.
get_hubs функциясының нәтижесі - біз сөздік ретінде сақтайтын өте әсерлі тізім. Мен оның көлемін бағалау үшін тізімді толығымен ұсынамын.
Біз Matplotlib көмегімен жарияланған мақалалардың санын көрсетеміз:
Мен диаграммадағы «geektimes» және «geektimes» мақалаларын бөлдім, өйткені Мақала бір уақытта екі бөлімге де тиесілі болуы мүмкін (мысалы, «DIY» + «микроконтроллерлер» + «C++»). Мен сайттағы профильдік мақалаларды бөлектеу үшін «профиль» белгісін қолдандым, бірақ бұл үшін ағылшын тіліндегі профиль термині мүлдем дұрыс емес.
Алдыңғы бөлімде біз осы жаздан бастап geektimes мақалалары үшін төлем ережелерінің өзгеруіне байланысты «geektimes эффектісі» туралы сұрадық. Geektimes мақалаларын бөлек көрсетейік:
Нәтиже қызықты. Geektimes мақалаларын көру санының жалпыға шамамен қатынасы шамамен 1:5 құрайды. Қараулардың жалпы саны айтарлықтай өзгергенімен, «ойын-сауық» мақалаларын қарау шамамен бірдей деңгейде қалды.
Сондай-ақ, «geektimes» бөліміндегі мақалаларды қараудың жалпы саны ережелерді өзгерткеннен кейін де төмендегенін байқай аласыз, бірақ «көзбен» жалпы мәндердің 5% -нан аспайды.
Бір мақаланы көрудің орташа санын қарау қызықты:
«Көңіл көтеру» мақалалары үшін бұл орташадан 40% жоғары. Бұл таңқаларлық емес шығар. Сәуір айының басындағы сәтсіздік маған түсініксіз, мүмкін солай болған шығар, немесе бұл қандай да бір талдау қатесі шығар немесе geektimes авторларының бірі демалысқа кеткен шығар;).
Айтпақшы, графикте мақалалардың қаралу санының тағы екі байқалатын шыңы көрсетілген - Жаңа жыл және мамыр мерекелері.
Хабтар
Уәде етілген хабтарды талдауға көшейік. Көру саны бойынша ең жақсы 20 хабты тізімдейміз:
Бір қызығы, көзқарастар бойынша ең танымал хаб «Ақпараттық қауіпсіздік» болды, көшбасшылардың бестігіне «Бағдарламалау» және «Танымал ғылым» да кірді.
Антитоп Gtk және Какаоны алады.
Мен сізге бір құпияны айтайын, жоғарғы хабтарды да көруге болады осында, бірақ көру саны онда көрсетілмеген.
рейтинг
Ақырында, уәде етілген рейтинг. Хаб талдау деректерін пайдалана отырып, біз осы 2019 жылғы ең танымал хабтар үшін ең танымал мақалаларды көрсете аламыз.
Ақырында, ешкім ренжітпеуі үшін мен ең аз кіретін «gtk» хабының рейтингін беремін. Бір жылдың ішінде ол жарық көрді одна Рейтингтің бірінші жолын «автоматты түрде» алатын мақала.