ProHoster > Blogi > netin uutisia > Habrastatistiikka: sivuston eniten ja vähiten vierailtujen osien tutkiminen
Habrastatistiikka: sivuston eniten ja vähiten vierailtujen osien tutkiminen
Hei Habr.
В edellinen osa Habrin liikennettä analysoitiin pääparametrien - artikkelien lukumäärän, niiden näkemysten ja arvioiden - mukaan. Kysymys sivustoosioiden suosiosta jäi kuitenkin tutkimatta. Oli mielenkiintoista tarkastella tätä tarkemmin ja löytää suosituimmat ja epäsuosituimmat keskukset. Lopuksi tarkastelen geektimes-vaikutusta tarkemmin, päätän uuteen parhaiden artikkelien valikoimaan uusien sijoituksien perusteella.
Tapahtuneesta kiinnostuneille jatkoa on luvassa.
Muistutan vielä kerran, että tilastot ja luokitukset eivät ole virallisia, minulla ei ole sisäpiiritietoa. Ei myöskään voida taata, ettenkö tehnyt virhettä jossain tai missannut jotain. Mutta silti mielestäni se osoittautui mielenkiintoiseksi. Aloitamme ensin koodilla; ne, jotka eivät ole kiinnostuneita tästä, voivat ohittaa ensimmäiset osiot.
Tiedonkeruu
Jäsentimen ensimmäisessä versiossa huomioitiin vain näyttökertojen, kommenttien ja artikkelien arvioiden määrä. Tämä on jo hyvä, mutta se ei salli monimutkaisempien kyselyiden tekemistä. On aika analysoida sivuston temaattisia osioita, jolloin voit tehdä varsin mielenkiintoista tutkimusta, esimerkiksi nähdä kuinka "C++" -osion suosio on muuttunut useiden vuosien aikana.
Artikkelin jäsennintä on parannettu, nyt se palauttaa keskittimet, joihin artikkeli kuuluu, sekä kirjoittajan lempinimen ja hänen arvosanansa (täälläkin voi tehdä paljon mielenkiintoista, mutta se tulee myöhemmin). Tiedot tallennetaan csv-tiedostoon, joka näyttää suunnilleen tältä:
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
...
Saamme luettelon sivuston tärkeimmistä teemakeskuksista.
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-funktio ja Str-luokka valitsevat merkkijonon kahden tagin väliltä, käytin niitä aikaisemmin. Teemakeskukset on merkitty *-merkillä, jotta ne voidaan helposti korostaa, ja voit myös poistaa vastaavien rivien kommentit saadaksesi osia muista luokista.
Get_hubs-funktion tulos on melko vaikuttava luettelo, jonka tallennamme sanakirjaksi. Esitän luettelon nimenomaan kokonaisuudessaan, jotta voit arvioida sen määrää.
Loput keskukset säilytettiin samalla tavalla. Nyt on helppo kirjoittaa funktio, joka palauttaa tuloksen riippumatta siitä, kuuluuko artikkeli geektimesiin tai profiilikeskukseen.
Näytämme julkaistujen artikkelien määrän Matplotlibillä:
Jaoin artikkelit "geektimes" ja "geektimes only" kaaviossa, koska Artikkeli voi kuulua molempiin osioon samanaikaisesti (esimerkiksi "DIY" + "mikroohjaimet" + "C++"). Käytin nimitystä "profiili" korostaakseni profiiliartikkeleita sivustolla, vaikka ehkä englanninkielinen termi profile ei olekaan täysin oikea.
Edellisessä osassa kysyimme "nörttiaikojen vaikutuksesta", joka liittyy nörttiaikojen artikkelien maksusääntöjen muutokseen kesästä alkaen. Näytämme geektimes-artikkelit erikseen:
Tulos on mielenkiintoinen. Geektimes-artikkelien näyttökertojen likimääräinen suhde kokonaismäärään on jossain 1:5. Mutta vaikka katselukertojen kokonaismäärä vaihteli huomattavasti, "viihde"-artikkeleiden katselumäärä pysyi suunnilleen samalla tasolla.
Voit myös huomata, että "geektimes"-osion artikkelien katselukerrat laskivat edelleen sääntöjen muuttamisen jälkeen, mutta "silmäyksellä", enintään 5% kokonaisarvoista.
On mielenkiintoista tarkastella keskimääräistä näyttökertaa artikkelia kohti:
Viihdeartikkeleissa se on noin 40 % keskiarvon yläpuolella. Tämä ei varmaan ole yllättävää. Huhtikuun alun epäonnistuminen on minulle epäselvä, ehkä niin tapahtui, tai se on jonkinlainen jäsennysvirhe tai ehkä joku geektimesin kirjoittajista lähti lomalle ;).
Muuten, kaavio näyttää kaksi huomattavampaa huippua artikkelien katselukertojen määrässä - uudenvuoden ja toukokuun lomat.
Keskittimet
Jatketaan luvattuun keskittimien analyysiin. Listataan 20 parasta keskusasemaa katselukertojen mukaan:
Yllättäen suosituin keskus näkemyksillä oli "Information Security", viiden parhaan johtajan joukkoon kuuluivat myös "Ohjelmointi" ja "Popular science".
Antitop miehittää Gtk:n ja kaakaon.
Kerron sinulle salaisuuden, myös huippunapit ovat nähtävissä täällä, vaikka näyttökertojen määrää ei näytetä siellä.
Luokitus
Ja lopuksi luvattu arvosana. Keskittimen analyysitietojen avulla voimme näyttää tämän vuoden 2019 suosituimpien keskusten suosituimmat artikkelit.
Ja lopuksi, jotta kukaan ei loukkaantuisi, annan arvosanan vähiten vieraillulle keskukselle "gtk". Vuoden sisällä se julkaistiin одна Artikkeli, joka myös "automaattisesti" on luokituksen ensimmäisellä rivillä.