ProHoster > Blog > berita internet > Habrastatistik: meneroka bahagian tapak yang paling banyak dan paling kurang dilawati
Habrastatistik: meneroka bahagian tapak yang paling banyak dan paling kurang dilawati
Hai Habr.
Π bahagian sebelumnya Trafik Habr dianalisis mengikut parameter utama - bilangan artikel, pandangan dan penilaian mereka. Walau bagaimanapun, isu populariti bahagian tapak kekal tidak diteliti. Menjadi menarik untuk melihat perkara ini dengan lebih terperinci dan mencari hab yang paling popular dan paling tidak popular. Akhir sekali, saya akan melihat kesan geektimes dengan lebih terperinci, berakhir dengan pilihan baharu artikel terbaik berdasarkan kedudukan baharu.
Bagi mereka yang berminat dengan apa yang berlaku, kesinambungan adalah di bawah pemotongan.
Izinkan saya mengingatkan anda sekali lagi bahawa statistik dan penilaian tidak rasmi, saya tidak mempunyai sebarang maklumat orang dalam. Ia juga tidak dijamin bahawa saya tidak membuat kesilapan di suatu tempat atau terlepas sesuatu. Tetapi tetap, saya fikir ia ternyata menarik. Kami akan mulakan dengan kod dahulu; mereka yang tidak berminat dengan ini boleh melangkau bahagian pertama.
Pengumpulan data
Dalam versi pertama penghurai, hanya bilangan paparan, ulasan dan penarafan artikel diambil kira. Ini sudah bagus, tetapi ia tidak membenarkan anda membuat pertanyaan yang lebih kompleks. Sudah tiba masanya untuk menganalisis bahagian tematik tapak ini; ini akan membolehkan anda melakukan penyelidikan yang agak menarik, sebagai contoh, melihat bagaimana populariti bahagian "C++" telah berubah selama beberapa tahun.
Penghurai artikel telah dipertingkatkan, kini ia mengembalikan hab kepunyaan artikel itu, serta nama samaran pengarang dan penilaiannya (banyak perkara menarik juga boleh dilakukan di sini, tetapi itu akan datang kemudian). Data disimpan dalam fail csv yang kelihatan seperti ini:
Kami akan menerima senarai hab tematik utama tapak.
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)
Fungsi find_between dan kelas Str memilih rentetan antara dua tag, saya menggunakannya sebelum ini. Hab tematik ditandakan dengan "*" supaya ia boleh diserlahkan dengan mudah dan anda juga boleh menyahkomen baris yang sepadan untuk mendapatkan bahagian kategori lain.
Output fungsi get_hubs ialah senarai yang agak mengagumkan, yang kami simpan sebagai kamus. Saya secara khusus membentangkan senarai secara keseluruhan supaya anda boleh menganggarkan jumlahnya.
Hab yang selebihnya dipelihara dengan cara yang sama. Kini mudah untuk menulis fungsi yang mengembalikan hasil sama ada artikel itu milik geektimes atau hab profil.
Kami memaparkan bilangan artikel yang diterbitkan menggunakan Matplotlib:
Saya membahagikan artikel "masa geek" dan "masa geek sahaja" dalam carta, kerana Artikel boleh tergolong dalam kedua-dua bahagian pada masa yang sama (contohnya, "DIY" + "mikropengawal" + "C++"). Saya menggunakan sebutan "profil" untuk menyerlahkan artikel profil di tapak, walaupun mungkin profil istilah bahasa Inggeris untuk ini tidak betul sepenuhnya.
Pada bahagian sebelumnya kami bertanya tentang "kesan masa geek" yang dikaitkan dengan perubahan dalam peraturan pembayaran untuk artikel untuk masa geek mulai musim panas ini. Mari paparkan artikel geektimes secara berasingan:
Hasilnya menarik. Nisbah anggaran paparan artikel masa geek kepada jumlah keseluruhan adalah sekitar 1:5. Tetapi sementara jumlah tontonan turun naik dengan ketara, tontonan artikel "hiburan" kekal pada tahap yang lebih kurang sama.
Anda juga dapat melihat bahawa jumlah tontonan artikel dalam bahagian "masa geek" masih jatuh selepas menukar peraturan, tetapi "mengikut mata", tidak lebih daripada 5% daripada jumlah nilai.
Adalah menarik untuk melihat purata bilangan tontonan setiap artikel:
Untuk artikel "hiburan" adalah kira-kira 40% di atas purata. Ini mungkin tidak menghairankan. Kegagalan pada awal April tidak jelas bagi saya, mungkin itulah yang berlaku, atau ia adalah sejenis ralat penghuraian, atau mungkin salah seorang penulis geektimes pergi bercuti;).
Dengan cara ini, graf menunjukkan dua lagi puncak yang ketara dalam bilangan paparan artikel - cuti Tahun Baru dan Mei.
Hab
Mari kita beralih kepada analisis hab yang dijanjikan. Mari senaraikan 20 hab teratas mengikut bilangan paparan:
Yang menghairankan, hab yang paling popular dari segi pandangan ialah "Keselamatan Maklumat"; 5 pemimpin teratas juga termasuk "Pengaturcaraan" dan "Sains popular".
Antitop menduduki Gtk dan Koko.
Saya akan memberitahu anda satu rahsia, hab teratas juga boleh dilihat di sini, walaupun bilangan tontonan tidak ditunjukkan di sana.
Penilaian
Dan akhirnya, rating yang dijanjikan. Menggunakan data analisis hab, kami boleh memaparkan artikel paling popular untuk hab paling popular untuk tahun 2019 ini.
Dan akhirnya, supaya tiada siapa yang tersinggung, saya akan memberikan penarafan hab yang paling kurang dikunjungi "gtk". Dalam masa setahun ia diterbitkan 1 Artikel, yang juga "secara automatik" menduduki baris pertama penilaian.