Habrastatistics: استكشاف الأقسام الأكثر والأقل زيارة في الموقع
يا هبر.
В الجزء السابق تم تحليل حركة مرور حبر وفقًا للمعايير الرئيسية - عدد المقالات ومشاهداتها وتقييماتها. ومع ذلك، ظلت مسألة شعبية أقسام الموقع دون دراسة. أصبح من المثير للاهتمام النظر إلى هذا بمزيد من التفصيل والعثور على المحاور الأكثر شهرة والأكثر شعبية. أخيرًا، سألقي نظرة على تأثير geektimes بمزيد من التفصيل، وانتهي بمجموعة جديدة من أفضل المقالات بناءً على تصنيفات جديدة.
بالنسبة لأولئك الذين يهتمون بما حدث، فإن الاستمرار قيد الخفض.
اسمحوا لي أن أذكركم مرة أخرى أن الإحصائيات والتقييمات ليست رسمية، وليس لدي أي معلومات داخلية. كما أنه ليس مضمونًا أنني لم أرتكب خطأً في مكان ما أو فاتني شيء ما. ولكن مع ذلك، أعتقد أن الأمر أصبح مثيرًا للاهتمام. سنبدأ بالكود أولًا، ومن لا يهتم بهذا يمكنه تخطي الأقسام الأولى.
جمع البيانات
في الإصدار الأول من المحلل اللغوي، تم أخذ عدد المشاهدات والتعليقات وتقييمات المقالات فقط في الاعتبار. وهذا جيد بالفعل، لكنه لا يسمح لك بإجراء استعلامات أكثر تعقيدًا. حان الوقت لتحليل الأقسام المواضيعية للموقع، وهذا سيسمح لك بإجراء بحث مثير للاهتمام، على سبيل المثال، معرفة كيف تغيرت شعبية قسم "C++" على مدار عدة سنوات.
تم تحسين محلل المقالة، وهو الآن يُرجع المحاور التي تنتمي إليها المقالة، بالإضافة إلى لقب المؤلف وتقييمه (يمكن القيام بالكثير من الأشياء المثيرة للاهتمام هنا أيضًا، ولكن سيأتي ذلك لاحقًا). يتم حفظ البيانات في ملف CSV الذي يبدو كالتالي:
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
...
سوف نتلقى قائمة بالمحاور المواضيعية الرئيسية للموقع.
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 وفئة Str بتحديد سلسلة بين علامتين، لقد استخدمتهما في وقت سابق. يتم تمييز المراكز المواضيعية بعلامة "*" بحيث يمكن التعرف عليها بسهولة، ويمكنك أيضًا إلغاء التعليق على الأسطر المقابلة للحصول على أقسام من فئات أخرى.
إن مخرجات الدالة get_hubs عبارة عن قائمة مثيرة للإعجاب إلى حد ما، والتي نحفظها كقاموس. أنا أقدم القائمة بأكملها على وجه التحديد حتى تتمكن من تقدير حجمها.
تم الحفاظ على المحاور المتبقية بنفس الطريقة. أصبح من السهل الآن كتابة دالة تُرجع النتيجة سواء كانت المقالة تنتمي إلى geektimes أو إلى مركز الملفات الشخصية.
لقد قمت بتقسيم المقالات "geektimes" و"geektimes فقط" في المخطط، لأن يمكن أن تنتمي المقالة إلى كلا القسمين في نفس الوقت (على سبيل المثال، "DIY" + "وحدات التحكم الدقيقة" + "C++"). لقد استخدمت تسمية "الملف الشخصي" لتسليط الضوء على مقالات الملف الشخصي على الموقع، على الرغم من أن مصطلح الملف الشخصي باللغة الإنجليزية ربما ليس صحيحًا تمامًا.
في الجزء السابق سألنا عن "تأثير geektimes" المرتبط بالتغيير في قواعد الدفع للمقالات الخاصة بـ geektimes بدءًا من هذا الصيف. دعونا نعرض مقالات geektimes بشكل منفصل:
والنتيجة مثيرة للاهتمام. النسبة التقريبية لمشاهدات مقالات geektimes إلى الإجمالي هي حوالي 1:5. لكن في حين تذبذب إجمالي عدد المشاهدات بشكل ملحوظ، فإن مشاهدة المقالات "الترفيهية" ظلت عند نفس المستوى تقريبًا.
يمكنك أيضًا ملاحظة أن إجمالي عدد مشاهدات المقالات في قسم "geektimes" ما زال ينخفض بعد تغيير القواعد، ولكن "بالعين المجردة"، بما لا يزيد عن 5% من إجمالي القيم.
ومن المثير للاهتمام أن ننظر إلى متوسط عدد المشاهدات لكل مقال:
أما بالنسبة للمقالات "الترفيهية" فهي أعلى بحوالي 40% من المتوسط. ربما هذا ليس مفاجئا. الفشل في بداية شهر أبريل غير مفهوم بالنسبة لي، ربما هذا ما حدث، أو أنه نوع من الخطأ التحليلي، أو ربما ذهب أحد مؤلفي geektimes في إجازة ؛).
بالمناسبة، يُظهر الرسم البياني ذروتين ملحوظتين في عدد مرات مشاهدة المقالات - رأس السنة الجديدة وعطلة مايو.
المحاور
دعنا ننتقل إلى التحليل الموعود للمحاور. دعونا ندرج أفضل 20 مركزًا حسب عدد المشاهدات:
وأخيرا، حتى لا يشعر أحد بالإهانة، سأقدم تصنيف المركز الأقل زيارة "GTK". وفي غضون عام تم نشره واحد المقالة، التي تحتل أيضًا "تلقائيًا" السطر الأول من التصنيف.