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 باشد یا یک هاب پروفایل، آسان است.
ما تعداد مقالات منتشر شده را با استفاده از Matplotlib نمایش می دهیم:
من مقالات "geektimes" و "geektimes only" را در نمودار تقسیم کردم، زیرا یک مقاله می تواند به طور همزمان به هر دو بخش تعلق داشته باشد (به عنوان مثال، "DIY" + "microcontrollers" + "C++"). من از نام "پروفایل" برای برجسته کردن مقالات نمایه در سایت استفاده کردم، اگرچه شاید اصطلاح انگلیسی نمایه برای این کار کاملاً صحیح نباشد.
در قسمت قبل، ما در مورد "اثر geektimes" مرتبط با تغییر قوانین پرداخت برای مقالات برای geektimes از تابستان امسال پرسیدیم. بیایید مقالات geektimes را جداگانه نمایش دهیم:
نتیجه جالب است. نسبت تقریبی بازدید از مقالات geektimes به کل چیزی حدود 1:5 است. اما در حالی که تعداد کل بازدیدها به طور قابل توجهی در نوسان بود، بازدید از مقالات "سرگرمی" تقریباً در همان سطح باقی ماند.
همچنین می توانید متوجه شوید که تعداد کل بازدید از مقالات در بخش "geektimes" پس از تغییر قوانین همچنان کاهش یافته است، اما "با چشم" بیش از 5٪ از مقادیر کل کاهش یافته است.
نگاهی به میانگین تعداد بازدید از هر مقاله جالب است:
برای مقالات «سرگرمی» حدود 40 درصد بالاتر از میانگین است. این احتمالاً تعجب آور نیست. شکست در آغاز ماه آوریل برای من نامشخص است، شاید این چیزی است که اتفاق افتاده است، یا نوعی خطای تجزیه است، یا شاید یکی از نویسندگان geektimes به تعطیلات رفته است ؛).
به هر حال، نمودار دو قله قابل توجه بیشتر در تعداد بازدیدهای مقاله را نشان می دهد - تعطیلات سال نو و می.
هاب
بیایید به تحلیل وعده داده شده هاب برویم. بیایید 20 مرکز برتر را بر اساس تعداد بازدیدها فهرست کنیم:
با کمال تعجب، محبوبترین مرکز از نظر بازدید، «امنیت اطلاعات» بود؛ 5 رهبر برتر نیز شامل «برنامهنویسی» و «علم محبوب» بودند.
آنتی تاپ Gtk و Cocoa را اشغال می کند.
رازی را به شما می گویم، هاب های برتر نیز دیده می شوند اینجا، اگرچه تعداد بازدیدها در آنجا نشان داده نشده است.
رتبه
و در نهایت امتیاز وعده داده شده. با استفاده از داده های تجزیه و تحلیل هاب، می توانیم محبوب ترین مقالات را برای محبوب ترین هاب ها برای سال 2019 نشان دهیم.
و در آخر، برای اینکه کسی توهین نشود، رتبه کم بازدیدترین هاب "gtk" را می دهم. در عرض یک سال منتشر شد одна مقاله ای که "به طور خودکار" نیز خط اول رتبه بندی را اشغال می کند.