Habrastatistika: vietnes visvairÄk un vismazÄk apmeklÄto sadaļu izpÄte
Äau, Habr.
Š iepriekÅ”ÄjÄ daļa Habra trafika tika analizÄta pÄc galvenajiem parametriem - rakstu skaita, to skatÄ«jumiem un reitingiem. TomÄr jautÄjums par vietnes sadaļu popularitÄti palika neizskatÄ«ts. Kļuva interesanti to aplÅ«kot sÄ«kÄk un atrast populÄrÄkos un nepopulÄrÄkos centrus. Visbeidzot, es sÄ«kÄk aplÅ«koÅ”u geektimes efektu, beidzot ar jaunu labÄko rakstu izlasi, pamatojoties uz jauniem reitingiem.
Tiem, kam ir interese par notikuÅ”o, turpinÄjums ir zem griezuma.
AtgÄdinu vÄlreiz, ka statistika un reitingi nav oficiÄla, man nav nekÄdas iekÅ”ÄjÄs informÄcijas. Nav arÄ« garantÄts, ka kaut kur neesmu kļūdÄ«jies vai kaut ko palaidis garÄm. Bet tomÄr, manuprÄt, tas izrÄdÄ«jÄs interesanti. Vispirms sÄksim ar kodu; tie, kurus tas neinteresÄ, var izlaist pirmÄs sadaļas.
Datu vÄkÅ”ana
PirmajÄ parsÄtÄja versijÄ tika Åemts vÄrÄ tikai skatÄ«jumu skaits, komentÄri un rakstu vÄrtÄjumi. Tas jau ir labi, bet neļauj veikt sarežģītÄkus vaicÄjumus. Ir pienÄcis laiks analizÄt vietnes tematiskÄs sadaļas; tas ļaus jums veikt diezgan interesantus pÄtÄ«jumus, piemÄram, redzÄt, kÄ vairÄku gadu laikÄ ir mainÄ«jusies sadaļas āC++ā popularitÄte.
Rakstu parsÄtÄjs ir uzlabots, tagad tas atgriež centrmezglus, kuriem raksts pieder, kÄ arÄ« autora segvÄrdu un viÅa vÄrtÄjumu (Å”eit var izdarÄ«t arÄ« daudz interesantu lietu, bet tas bÅ«s vÄlÄk). Dati tiek saglabÄti csv failÄ, kas izskatÄs apmÄram Å”Ädi:
MÄs saÅemsim vietnes galveno tematisko centru sarakstu.
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)
Funkcija find_between un klase Str izvÄlas virkni starp diviem tagiem, es tos izmantoju pirms tam. Tematiskie centri ir atzÄ«mÄti ar "*", lai tos varÄtu viegli izcelt, kÄ arÄ« varat atsaukt atbilstoÅ”Äs rindiÅas, lai iegÅ«tu citu kategoriju sadaļas.
Funkcijas get_hubs izvade ir diezgan iespaidÄ«gs saraksts, kuru saglabÄjam kÄ vÄrdnÄ«cu. Es Ä«paÅ”i piedÄvÄju sarakstu pilnÄ«bÄ, lai jÅ«s varÄtu novÄrtÄt tÄ apjomu.
AtlikuÅ”ie mezgli tika saglabÄti tÄdÄ paÅ”Ä veidÄ. Tagad ir viegli uzrakstÄ«t funkciju, kas atgriež rezultÄtu neatkarÄ«gi no tÄ, vai raksts pieder geektimes vai profila centram.
MÄs parÄdÄm publicÄto rakstu skaitu, izmantojot Matplotlib:
Es diagrammÄ sadalÄ«ju rakstus āgeektimesā un āgeektimes onlyā, jo Raksts var piederÄt abÄm sadaļÄm vienlaikus (piemÄram, āDIYā + āmikrokontrolleriā + āC++ā). Es izmantoju apzÄ«mÄjumu āprofilsā, lai izceltu vietnes profila rakstus, lai gan, iespÄjams, angļu valodas termins profile nav pilnÄ«gi pareizs.
IepriekÅ”ÄjÄ daÄ¼Ä jautÄjÄm par āgeektimes efektuā, kas saistÄ«ts ar izmaiÅÄm geektimes rakstu apmaksas noteikumos, sÄkot no Ŕīs vasaras. ParÄdÄ«sim geektimes rakstus atseviŔķi:
RezultÄts ir interesants. AptuvenÄ geektimes rakstu skatÄ«jumu attiecÄ«ba pret kopÄjo skaitu ir kaut kur ap 1:5. Bet, lai gan kopÄjais skatÄ«jumu skaits manÄmi svÄrstÄ«jÄs, āizklaidesā rakstu skatÄ«jums palika aptuveni tajÄ paÅ”Ä lÄ«menÄ«.
TÄpat var pamanÄ«t, ka kopÄjais rakstu skatÄ«jumu skaits sadaÄ¼Ä āgeektimesā pÄc noteikumu maiÅas joprojÄm kritÄs, bet āar aciā, ne vairÄk kÄ par 5% no kopÄjÄm vÄrtÄ«bÄm.
Interesanti apskatÄ«t vidÄjo skatÄ«jumu skaitu uz vienu rakstu:
āIzklaidesā rakstiem tas ir par aptuveni 40% virs vidÄjÄ lÄ«meÅa. Tas droÅ”i vien nav pÄrsteidzoÅ”i. Neveiksme aprīļa sÄkumÄ man ir neskaidra, varbÅ«t tÄ ir noticis, vai tÄ ir kÄda veida parsÄÅ”anas kļūda, vai varbÅ«t kÄds no geektimes autoriem devies atvaļinÄjumÄ ;).
Starp citu, grafikÄ redzamas vÄl divas manÄmas rakstu skatÄ«jumu skaita virsotnes - Jaunais gads un maija brÄ«vdienas.
PÄrsteidzoÅ”i, ka populÄrÄkais centrs skatÄ«jumu ziÅÄ bija āInformÄcijas droŔībaā, top 5 lÄ«deru vidÅ« bija arÄ« āProgrammÄÅ”anaā un āPopulÄrÄ zinÄtneā.
Antitop aizÅem Gtk un Cocoa.
AtklÄÅ”u noslÄpumu, top rumbas arÄ« var redzÄt Å”eit, lai gan skatÄ«jumu skaits tur nav parÄdÄ«ts.
NovÄrtÄjums
Un visbeidzot solÄ«tais reitings. Izmantojot centrmezglu analÄ«zes datus, mÄs varam parÄdÄ«t populÄrÄkos rakstus par populÄrÄkajiem centrmezgliem Å”ajÄ 2019. gadÄ.
Un visbeidzot, lai neviens neapvainotos, es pieŔķirÅ”u vismazÄk apmeklÄtÄ centra āgtkā vÄrtÄjumu. Gada laikÄ tas tika publicÄts viens Raksts, kas arÄ« āautomÄtiskiā ieÅem reitinga pirmo rindu.