Habrastatistika: saytning eng ko'p va eng kam tashrif buyurilgan bo'limlarini o'rganish
Salom, Xabr.
В oldingi qism Xabrning trafigi asosiy parametrlar - maqolalar soni, ularning ko'rishlari va reytinglari bo'yicha tahlil qilindi. Biroq, sayt bo'limlarining mashhurligi masalasi o'rganilmagan holda qoldi. Buni batafsilroq ko'rib chiqish va eng mashhur va eng mashhur bo'lmagan markazlarni topish qiziq bo'ldi. Va nihoyat, men geektimes effektini batafsil ko'rib chiqaman va yangi reytinglar asosidagi eng yaxshi maqolalarning yangi tanlovi bilan yakunlayman.
Nima bo'lganiga qiziqqanlar uchun davomi kesma ostida.
Yana bir bor eslatib o‘taman, statistika va reytinglar rasmiy emas, menda hech qanday insayder ma’lumot yo‘q. Shuningdek, biror joyda xato qilmaganim yoki biror narsani o'tkazib yubormaganligim kafolatlanmaydi. Lekin shunga qaramay, menimcha, bu qiziqarli bo'ldi. Biz avval koddan boshlaymiz, bunga qiziqmaganlar birinchi bo'limlarni o'tkazib yuborishlari mumkin.
Ma'lumotlar yig'ish
Tahlil qiluvchining birinchi versiyasida faqat ko'rishlar soni, sharhlar va maqola reytinglari hisobga olindi. Bu allaqachon yaxshi, lekin u sizga murakkabroq so'rovlarni amalga oshirishga imkon bermaydi. Saytning tematik bo'limlarini tahlil qilish vaqti keldi, bu sizga juda qiziqarli tadqiqotlar o'tkazishga imkon beradi, masalan, "C++" bo'limining mashhurligi bir necha yil ichida qanday o'zgarganini ko'ring.
Maqolani tahlil qilish moslamasi takomillashtirildi, endi u maqola tegishli bo'lgan markazlarni, shuningdek muallifning taxallusini va uning reytingini qaytaradi (bu erda ham juda ko'p qiziqarli narsalarni qilish mumkin, ammo bu keyinroq keladi). Ma'lumotlar csv faylida saqlanadi, u quyidagicha ko'rinadi:
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
...
Biz saytning asosiy tematik markazlari ro'yxatini olamiz.
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 funksiyasi va Str klassi ikkita teg orasidagi satrni tanlaydi, men ulardan foydalanardim oldinroq. Tematik markazlar "*" belgisi bilan belgilanadi, shuning uchun ularni osongina ajratib ko'rsatish mumkin, shuningdek, boshqa toifalar bo'limlarini olish uchun tegishli qatorlarni izohdan chiqarishingiz mumkin.
Get_hubs funktsiyasining chiqishi juda ta'sirli ro'yxat bo'lib, biz uni lug'at sifatida saqlaymiz. Uning hajmini taxmin qilishingiz uchun men ro'yxatni to'liq taqdim etaman.
Qolgan markazlar xuddi shu tarzda saqlanib qolgan. Endi maqola geektimes yoki profil markaziga tegishlimi, natijani qaytaradigan funksiyani yozish oson.
Biz Matplotlib yordamida chop etilgan maqolalar sonini ko'rsatamiz:
Men "geektimes" va "faqat geektimes" maqolalarini jadvalda ajratdim, chunki Maqola bir vaqtning o'zida ikkala bo'limga tegishli bo'lishi mumkin (masalan, "DIY" + "mikrokontrollerlar" + "C++"). Saytdagi profil maqolalarini ta'kidlash uchun men "profil" belgisidan foydalandim, garchi buning inglizcha profil atamasi mutlaqo to'g'ri emas.
Oldingi qismda biz bu yozdan boshlab geektimes uchun maqolalar uchun to'lov qoidalarining o'zgarishi bilan bog'liq "geektimes effekti" haqida so'radik. Keling, geektimes maqolalarini alohida ko'rsatamiz:
Natija qiziq. Geektimes maqolalarini ko'rishlar sonining umumiy soniga taxminiy nisbati 1:5 atrofida. Ko'rishlarning umumiy soni sezilarli darajada o'zgargan bo'lsa-da, "ko'ngilochar" maqolalarni ko'rish taxminan bir xil darajada qoldi.
Shuningdek, "geektimes" bo'limidagi maqolalarni ko'rishlar soni qoidalar o'zgartirilgandan keyin ham pasayganini, ammo "ko'z bilan" umumiy qiymatlarning 5% dan ko'p bo'lmaganiga e'tibor berishingiz mumkin.
Har bir maqolaning o'rtacha ko'rishlar sonini ko'rish qiziq:
"O'yin-kulgi" maqolalari uchun bu o'rtacha 40% dan yuqori. Bu, ehtimol, ajablanarli emas. Aprel oyining boshidagi muvaffaqiyatsizlik men uchun tushunarsiz, ehtimol shunday bo'lgandir yoki bu qandaydir tahlil qilish xatosi yoki geektimes mualliflaridan biri ta'tilga ketgandir;).
Aytgancha, grafik maqolalarni ko'rish sonining yana ikkita sezilarli cho'qqisini ko'rsatadi - Yangi yil va may bayramlari.
Hublar
Keling, markazlarning va'da qilingan tahliliga o'tamiz. Keling, ko'rishlar soni bo'yicha eng yaxshi 20 ta markazni sanab o'tamiz:
Ajablanarlisi shundaki, ko'rishlar bo'yicha eng mashhur markaz "Axborot xavfsizligi" bo'ldi;
Antitop Gtk va Kakaoni egallaydi.
Men sizga bir sirni aytaman, yuqori markazlarni ham ko'rish mumkin shu yerda, garchi u yerda ko'rishlar soni ko'rsatilmagan bo'lsa-da.
Reyting
Va nihoyat, va'da qilingan reyting. Hub tahlili ma'lumotlaridan foydalanib, biz 2019 yil uchun eng mashhur markazlar uchun eng mashhur maqolalarni ko'rsatishimiz mumkin.
Va nihoyat, hech kim xafa bo'lmasligi uchun men eng kam tashrif buyurilgan "gtk" markazining reytingini beraman. Bir yil ichida u nashr etildi одна Maqola, shuningdek, "avtomatik" reytingning birinchi qatorini egallaydi.