Habrastatistics. ուսումնասիրել կայքի ամենաշատ և ամենաքիչ այցելվող հատվածները
Հե՜յ Հաբր։
В նախորդ մասը Habr-ի տրաֆիկը վերլուծվել է ըստ հիմնական պարամետրերի՝ հոդվածների քանակի, դրանց դիտումների և վարկանիշների։ Այնուամենայնիվ, կայքի բաժինների հանրաճանաչության հարցը մնաց չքննված։ Հետաքրքիր դարձավ ավելի մանրամասն նայել այս ամենին և գտնել ամենահայտնի և ոչ հանրաճանաչ կենտրոնները: Ի վերջո, ես ավելի մանրամասն կանդրադառնամ 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 առաջատարների թվում են նաև «Ծրագրավորումը» և «Հանրաճանաչ գիտությունը»:
Անտիտոպը զբաղեցնում է Գտկը և Կակաոն։
Գաղտնիք կասեմ, վերին հանգույցներն էլ են երեւում այստեղ, չնայած դիտումների քանակը այնտեղ ցուցադրված չէ։
Գնահատական
Եվ վերջապես՝ խոստացված վարկանիշը. Օգտագործելով հանգույցների վերլուծության տվյալները՝ մենք կարող ենք ցուցադրել այս 2019 թվականի ամենահայտնի հանգույցների ամենահայտնի հոդվածները:
Եվ վերջապես, որպեսզի ոչ ոք չնեղանա, կտամ ամենաքիչ այցելվող «gtk» կենտրոնի վարկանիշը։ Մեկ տարվա ընթացքում այն լույս է տեսել одна Հոդվածը, որը նույնպես «ավտոմատ կերպով» զբաղեցնում է վարկանիշի առաջին տողը։