ProHoster > blog > berita internet > Habrastatistics: menjelajahi bagian situs yang paling banyak dan paling jarang dikunjungi
Habrastatistics: menjelajahi bagian situs yang paling banyak dan paling jarang dikunjungi
Hei Habr.
В bagian sebelumnya Lalu lintas Habr dianalisis berdasarkan parameter utama - jumlah artikel, penayangan, dan peringkatnya. Namun, masalah popularitas bagian situs masih belum teruji. Menjadi menarik untuk melihat ini lebih detail dan menemukan hub paling populer dan paling tidak populer. Terakhir, saya akan melihat efek geektimes lebih detail, diakhiri dengan pilihan artikel terbaik baru berdasarkan peringkat baru.
Bagi mereka yang tertarik dengan apa yang terjadi, kelanjutannya sedang dalam tahap pemotongan.
Izinkan saya mengingatkan Anda sekali lagi bahwa statistik dan peringkatnya tidak resmi, saya tidak memiliki informasi orang dalam. Juga tidak ada jaminan bahwa saya tidak melakukan kesalahan atau melewatkan sesuatu. Tapi tetap saja, menurutku itu menarik. Kita akan mulai dengan kodenya terlebih dahulu; mereka yang tidak tertarik dengan hal ini dapat melewati bagian pertama.
Pengumpulan data
Pada parser versi pertama, hanya jumlah penayangan, komentar, dan peringkat artikel yang diperhitungkan. Ini sudah bagus, tetapi tidak memungkinkan Anda membuat pertanyaan yang lebih kompleks. Saatnya menganalisis bagian tematik situs; ini akan memungkinkan Anda melakukan penelitian yang cukup menarik, misalnya melihat bagaimana popularitas bagian “C++” telah berubah selama beberapa tahun.
Pengurai artikel telah ditingkatkan, sekarang ia mengembalikan hub tempat artikel tersebut berada, serta nama panggilan penulis dan peringkatnya (banyak hal menarik juga dapat dilakukan di sini, tetapi itu akan dibahas nanti). Data disimpan dalam file csv yang terlihat seperti ini:
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
...
Kami akan menerima daftar hub tematik utama situs.
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 string antara dua tag, saya menggunakannya sebelumnya. Hub tematik ditandai dengan "*" sehingga dapat dengan mudah disorot, dan Anda juga dapat menghapus komentar pada baris yang sesuai untuk mendapatkan bagian dari kategori lainnya.
Output dari fungsi get_hubs adalah daftar yang cukup mengesankan, yang kami simpan sebagai kamus. Saya secara khusus menyajikan daftarnya secara keseluruhan sehingga Anda dapat memperkirakan volumenya.
Hub yang tersisa dipertahankan dengan cara yang sama. Sekarang mudah untuk menulis fungsi yang mengembalikan hasil apakah artikel tersebut milik geektimes atau hub profil.
Kami menampilkan jumlah artikel yang diterbitkan menggunakan Matplotlib:
Saya membagi artikel “geektimes” dan “geektimes only” di grafik, karena Sebuah artikel dapat menjadi bagian dari kedua bagian secara bersamaan (misalnya, “DIY” + “mikrokontroler” + “C++”). Saya menggunakan sebutan “profil” untuk menyorot artikel profil di situs, meskipun mungkin istilah profil bahasa Inggris untuk ini tidak sepenuhnya benar.
Pada bagian sebelumnya kami menanyakan tentang “efek geektimes” terkait dengan perubahan aturan pembayaran artikel untuk geektimes mulai musim panas ini. Mari tampilkan artikel geektimes secara terpisah:
Hasilnya menarik. Perkiraan rasio penayangan artikel geektimes terhadap totalnya adalah sekitar 1:5. Meskipun jumlah penayangannya sangat berfluktuasi, jumlah penayangan artikel “hiburan” tetap pada tingkat yang sama.
Anda juga dapat melihat bahwa jumlah total penayangan artikel di bagian “geektimes” masih turun setelah aturan diubah, tetapi “secara kasat mata”, tidak lebih dari 5% dari total nilai.
Menarik untuk melihat rata-rata jumlah penayangan per artikel:
Untuk artikel “hiburan”, angkanya sekitar 40% di atas rata-rata. Hal ini mungkin tidak mengherankan. Kegagalan di awal April tidak jelas bagi saya, mungkin itu yang terjadi, atau semacam kesalahan penguraian, atau mungkin salah satu penulis geektimes sedang berlibur ;).
Omong-omong, grafik menunjukkan dua puncak yang lebih mencolok dalam jumlah penayangan artikel - liburan Tahun Baru dan Mei.
hub
Mari beralih ke analisis hub yang dijanjikan. Mari kita daftar 20 hub teratas berdasarkan jumlah penayangan:
Yang mengejutkan, hub yang paling populer dalam hal pandangan adalah “Keamanan Informasi”; 5 pemimpin teratas juga mencakup “Pemrograman” dan “Ilmu pengetahuan populer”.
Antitop menempati Gtk dan Kakao.
Saya akan memberi tahu Anda sebuah rahasia, hub teratas juga dapat dilihat di sini, meskipun jumlah penayangan tidak ditampilkan di sana.
Penilaian
Dan terakhir, rating yang dijanjikan. Dengan menggunakan data analisis hub, kami dapat menampilkan artikel terpopuler untuk hub terpopuler tahun 2019 ini.
Dan terakhir, agar tidak ada yang tersinggung, saya akan memberikan rating hub yang paling jarang dikunjungi “gtk”. Dalam setahun itu diterbitkan satu Artikel yang juga “otomatis” menempati peringkat pertama.