Habrastatistics: esplorante la plej kaj malplej vizitatajn sekciojn de la retejo
Hej Habr.
В antaŭa parto La trafiko de Habr estis analizita laŭ la ĉefaj parametroj - la nombro da artikoloj, iliaj opinioj kaj taksoj. Tamen, la temo de la populareco de la retejosekcioj restis neekzamenita. Iĝis interese rigardi ĉi tion pli detale kaj trovi la plej popularajn kaj plej nepopularajn nabojn. Fine, mi rigardos la geektimes-efekton pli detale, finante per nova elekto de la plej bonaj artikoloj bazitaj sur novaj rangotabeloj.
Por tiuj, kiuj interesiĝas pri tio, kio okazis, la daŭrigo estas sub la tranĉo.
Lasu min rememorigi vin denove, ke la statistikoj kaj taksoj ne estas oficialaj, mi ne havas neniun internan informon. Ankaŭ ne estas garantiite, ke mi ne ie faris eraron aŭ maltrafis ion. Sed tamen, mi pensas, ke ĝi rezultis interesa. Ni komencos unue per la kodo; tiuj, kiuj ne interesiĝas pri tio, povas preterlasi la unuajn sekciojn.
Kolekto de datumoj
En la unua versio de la analizilo, nur la nombro da vidoj, komentoj kaj artikoltaksoj estis enkalkulitaj. Ĉi tio jam estas bona, sed ĝi ne permesas al vi fari pli kompleksajn demandojn. Estas tempo analizi la temajn sekciojn de la retejo; ĉi tio permesos al vi fari sufiĉe interesajn esplorojn, ekzemple, vidi kiel la populareco de la sekcio "C++" ŝanĝiĝis dum pluraj jaroj.
La artikola analizilo estis plibonigita, nun ĝi resendas la nabojn al kiuj apartenas la artikolo, kaj ankaŭ la kromnomon de la aŭtoro kaj lian takson (multaj interesaj aferoj ankaŭ povas esti faritaj ĉi tie, sed tio venos poste). La datumoj estas konservitaj en csv-dosiero, kiu aspektas kiel ĉi tio:
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
...
Ni ricevos liston de la ĉefaj temaj naboj de la retejo.
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)
La funkcio find_between kaj la klaso Str elektas ĉenon inter du etikedoj, mi uzis ilin pli frue. Temaj naboj estas markitaj per "*" tiel ke ili povas esti facile elstarigitaj, kaj vi ankaŭ povas malkomenti la respondajn liniojn por akiri sekciojn de aliaj kategorioj.
La eligo de la funkcio get_hubs estas sufiĉe impona listo, kiun ni konservas kiel vortaro. Mi specife prezentas la liston en ĝia tutaĵo, por ke vi povu taksi ĝian volumon.
La ceteraj naboj estis konservitaj en la sama maniero. Nun estas facile skribi funkcion, kiu resendas la rezulton ĉu la artikolo apartenas al geektimes aŭ al profilcentro.
Ni montras la nombron da publikigitaj artikoloj uzante Matplotlib:
Mi dividis la artikolojn "geektimes" kaj "geektimes nur" en la diagramo, ĉar Artikolo povas aparteni al ambaŭ sekcioj samtempe (ekzemple "DIY" + "mikroregiloj" + "C++"). Mi uzis la nomon "profilo" por reliefigi profilartikolojn en la retejo, kvankam eble la angla termino profile por tio ne estas tute ĝusta.
En la antaŭa parto ni demandis pri la "geektimes-efekto" asociita kun la ŝanĝo en la pagaj reguloj por artikoloj por geektimes ekde ĉi-somere. Ni montru la geektimes-artikolojn aparte:
La rezulto estas interesa. La proksimuma proporcio de vidoj de geektimes-artikoloj al la totalo estas ie ĉirkaŭ 1:5. Sed dum la tuta nombro da vidoj rimarkeble variadis, la spektado de "distraj" artikoloj restis proksimume sur la sama nivelo.
Vi ankaŭ povas rimarki, ke la tuta nombro da vidoj de artikoloj en la sekcio "geektimes" ankoraŭ malpliiĝis post ŝanĝo de la reguloj, sed "okule", je ne pli ol 5% de la totalaj valoroj.
Estas interese rigardi la averaĝan nombron da vidoj per artikolo:
Por "distraj" artikoloj ĝi estas ĉirkaŭ 40% super mezumo. Ĉi tio verŝajne ne estas surpriza. La malsukceso komence de aprilo estas al mi neklara, eble tio okazis, aŭ temas pri ia analiza eraro, aŭ eble unu el la geektimes aŭtoroj feriis ;).
Cetere, la grafikaĵo montras du pliajn rimarkindajn pintojn en la nombro de vidoj de artikoloj - la novjaraj kaj majaj ferioj.
Naboj
Ni transiru al la promesita analizo de naboj. Ni listigu la plej bonajn 20 centrojn laŭ nombro da vidoj:
Surprize, la plej populara nabo laŭ vidoj estis "Informa Sekureco"; la supraj 5 gvidantoj ankaŭ inkludis "Programadon" kaj "Populan sciencon".
Antitop okupas Gtk kaj Cocoa.
Mi diros al vi sekreton, la supraj naboj ankaŭ videblas tie, kvankam la nombro de vidoj ne estas montrita tie.
Taksado
Kaj fine, la promesita takso. Uzante nab-analizajn datumojn, ni povas montri la plej popularajn artikolojn por la plej popularaj naboj por ĉi tiu jaro 2019.
Kaj fine, por ke neniu ofendiĝu, mi donos la takson de la malplej vizitata hub "gtk". Ene de jaro ĝi estis publikigita unu La artikolo, kiu ankaŭ "aŭtomate" okupas la unuan linion de la takso.