ProHoster > Blog > internetes hírek > Habrastatisztika: az oldal leggyakrabban és legkevésbé látogatott részeinek feltárása
Habrastatisztika: az oldal leggyakrabban és legkevésbé látogatott részeinek feltárása
Szia Habr.
В előző rész A Habr forgalmát a fő paraméterek - a cikkek száma, nézettsége és értékelése - szerint elemezték. Az oldalrészek népszerűségének kérdése azonban megvizsgálatlan maradt. Érdekes lett ezt részletesebben megvizsgálni, és megtalálni a legnépszerűbb és legnépszerűtlenebb csomópontokat. Végül részletesebben megvizsgálom a geektimes effektust, a végén pedig a legjobb cikkek új válogatásával, új rangsor alapján.
Akit érdekelnek a történtek, annak a folytatás várat magára.
Hadd emlékeztesselek még egyszer, hogy a statisztikák és a minősítések nem hivatalosak, nincs bennfentes információm. Az sem garantált, hogy nem hibáztam valahol, vagy nem hagytam ki valamit. De ettől függetlenül szerintem érdekes lett. Először a kóddal kezdjük, akit ez nem érdekel, az átugorhatja az első részeket.
Adatgyűjtés
Az elemző első verziójában csak a megtekintések, a megjegyzések és a cikkek értékelésének számát vették figyelembe. Ez már jó, de nem tesz lehetővé bonyolultabb lekérdezéseket. Ideje elemezni az oldal tematikus rovatait, így elég érdekes kutatásokat végezhetsz, például megnézheted, hogyan változott a „C++” szekció népszerűsége több év alatt.
A cikkelemzőt továbbfejlesztették, most visszaadja azokat a hubokat, amelyekhez a cikk tartozik, valamint a szerző becenevét és értékelését (sok érdekességet itt is lehet csinálni, de az majd később). Az adatokat a rendszer egy csv fájlba menti, amely valahogy így néz ki:
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
...
Megkapjuk az oldal főbb tematikus csomópontjainak listáját.
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)
A find_between függvény és az Str osztály két tag között választ ki egy karakterláncot, én ezeket használtam korábban. A tematikus csomópontokat "*" jelöli, így könnyen kiemelhetők, és a megfelelő sorok megjegyzését is törölheti, hogy más kategóriákba tartozó szakaszokat kapjon.
A get_hubs függvény kimenete egy meglehetősen lenyűgöző lista, amelyet szótárként mentünk el. Kifejezetten a listát a maga teljességében mutatom be, hogy meg tudja becsülni a terjedelmét.
A megmaradt csomópontokat ugyanúgy megőrizték. Most már könnyű olyan függvényt írni, amely visszaadja az eredményt, függetlenül attól, hogy a cikk a geektimes-hez vagy egy profilközponthoz tartozik.
A megjelent cikkek számát a Matplotlib segítségével jelenítjük meg:
A diagramon a „geektimes” és „csak geektimes” szócikkeket felosztottam, mert Egy cikk tartozhat egyszerre mindkét szekcióhoz (például „DIY” + „mikrovezérlők” + „C++”). A „profil” megjelölést használtam az oldalon található profilcikkek kiemelésére, bár talán az angol profile kifejezés nem teljesen helytálló.
Az előző részben a geektimes cikkek fizetési szabályainak idén nyáron kezdődő változásával kapcsolatos „geektime-effektusról” kérdeztünk. Mutassuk meg külön a geektimes cikkeket:
Az eredmény érdekes. A geektimes cikkek nézettségének hozzávetőleges aránya az összeshez képest valahol 1:5 körül van. Ám míg az összmegtekintések száma érezhetően ingadozott, a „szórakoztató” cikkek nézettsége megközelítőleg változatlan maradt.
Észreveheti azt is, hogy a „geektimes” rovatban lévő cikkek megtekintéseinek száma a szabályok megváltoztatása után is csökkent, de „szemmel”, legfeljebb az összérték 5%-ával.
Érdekes megnézni a cikkenkénti átlagos megtekintések számát:
A „szórakoztató” cikkeknél ez körülbelül 40%-kal meghaladja az átlagot. Ez valószínűleg nem meglepő. Az április eleji kudarc számomra homályos, lehet, hogy ez történt, vagy valamilyen elemzési hiba, esetleg a geektimes egyik szerzője nyaralni ment ;).
A grafikon egyébként a cikkmegtekintések számában még két szembetűnő csúcsot mutat - az újévi és a májusi ünnepeket.
Hubok
Térjünk át a hubok ígért elemzésére. Soroljuk fel a 20 legnépszerűbb központot a megtekintések száma szerint:
Meglepő módon a legnépszerűbb csomópont a nézetek tekintetében az „Információs biztonság” volt, az első 5 vezető között a „Programozás” és a „Népszerű tudomány” is szerepelt.
Az Antitop a Gtk-t és a Kakaót foglalja el.
Elárulok egy titkot, a felső hubok is láthatóak itt, bár ott nincs feltüntetve a megtekintések száma.
Értékelés
És végül az ígért minősítés. A hub elemzési adatok felhasználásával megjeleníthetjük a legnépszerűbb cikkeket a legnépszerűbb hubokról az idei 2019-es évben.
És végül, hogy senki ne sértődjön meg, megadom a legkevésbé látogatott csomópont „gtk” minősítését. Egy éven belül megjelent одна A cikk, amely szintén „automatikusan” az értékelés első sorát foglalja el.