Habrastatistics: vekolîna beşên herî zêde û herî hindik ên malperê
Hey Habr.
В beşa berê Trafîka Habrê li gorî pîvanên sereke - hejmara gotaran, dîtin û nirxandinên wan - hate analîz kirin. Lêbelê, mijara populerbûna beşên malperê nehat lêkolîn kirin. Balkêş bû ku meriv li vê yekê bi hûrgulî binêre û navendên herî populer û ne populer bibînin. Di dawiyê de, ez ê bi hûrgulî li bandora geektimes binihêrim, ku bi hilbijarkek nû ya çêtirîn gotarên li ser bingeha rêzikên nû bi dawî bibe.
Ji bo kesên ku bi çi qewimî re eleqedar dibin, berdewam di bin qutbûnê de ye.
Careke din bi bîr tînim ku îstatîstîk û nirx ne fermî ne, ti agahiyeke min a hundirîn nîne. Di heman demê de ne garantî ye ku min li deverek xeletiyek nekiriye an tiştek ji bîr nekiriye. Lê dîsa jî, ez difikirim ku ew balkêş derket. Em ê pêşî bi kodê dest pê bikin, yên ku bi vê yekê re eleqedar nabin, dikarin beşên yekem derbas bikin.
Komkirina daneyan
Di guhertoya yekem a parserê de, tenê jimara dîtin, şîrove û nirxandinên gotaran hatine hesibandin. Ev jixwe baş e, lê ew nahêle ku hûn pirsên tevlihevtir bikin. Wext e ku hûn beşên tematîk ên malperê analîz bikin ev ê bihêle ku hûn lêkolînek pir balkêş bikin, mînakî, bibînin ka çiqas populerbûna beşa "C ++" di çend salan de guheriye.
Parsera gotarê baştir bûye, naha ew navendên ku gotar tê de ye vedigerîne, her weha paşnavê nivîskar û nirxa wî vedigerîne (li vir jî gelek tiştên balkêş dikarin bêne kirin, lê ew ê paşê were). Daneyên di pelek csv de têne tomar kirin ku tiştek weha xuya dike:
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
...
Em ê navnîşek navendên mijarên sereke yên malperê bistînin.
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)
Fonksiyona find_between û çîna Str di navbera du nîşanan de rêzek hilbijêrin, min ew bikar anîn berê. Navendên tematîk bi "*"-ê têne nîşankirin da ku ew bi hêsanî bêne ronî kirin, û hûn dikarin rêzikên têkildar jî şîrove bikin da ku beşên kategoriyên din bistînin.
Hilberîna fonksiyona get_hubs navnîşek berbiçav e, ku em wekî ferheng tomar dikin. Ez bi taybetî navnîşê bi tevahî pêşkêşî dikim da ku hûn qebareya wê texmîn bikin.
Hubên mayî jî bi heman awayî hatin parastin. Naha hêsan e ku meriv fonksiyonek binivîsîne ku encamê vedigerîne ka gotar ji geektimes re be an ji navendek profîlek be.
Em hejmara gotarên hatine weşandin bi karanîna Matplotlib nîşan didin:
Min gotarên "geektimes" û "tenê geektimes" di nexşeyê de dabeş kirin, ji ber ku Gotarek dikare di heman demê de bibe xwediyê her du beşan (mînak, "DIY" + "microkontroller" + "C++"). Min binavkirina "profîl" bikar anî da ku gotarên profîlê yên li ser malperê ronî bike, her çend dibe ku profîla terma îngilîzî ji bo vê yekê bi tevahî ne rast be.
Di beşa paşîn de me li ser "bandora geektimes" ya ku bi guherîna qaîdeyên dravdanê ji bo gotarên ji bo geektimes vê havînê dest pê dike ve pirsî. Ka em gotarên geektimes cuda nîşan bidin:
Encam balkêş e. Rêjeya texmînî ya dîtinên gotarên geektimes bi tevahî li derûdora 1:5 e. Lê dema ku jimara giştî ya dîtinan bi rengek berbiçav diguhezî, temaşekirina gotarên "şavhewa" hema hema di heman astê de ma.
Her weha hûn dikarin bala xwe bidin ku jimara giştî ya dîtinên gotaran di beşa "geektimes" de piştî guheztina qaîdeyan dîsa jî kêm bû, lê "bi çav", ne ji% 5 ê nirxên giştî.
Balkêş e ku meriv li hejmara navînî ya dîtina her gotarê binêre:
Ji bo gotarên "şahî" ew bi qasî 40% li ser navînî ye. Ev dibe ku ne ecêb e. Têkçûn di destpêka Nîsanê de ji min re ne diyar e, dibe ku ew çi bûye, an ew celebek xeletiyek parsek e, an jî dibe ku yek ji nivîskarên geektimes çûye betlaneyê;).
Bi awayê, grafîk di hejmara dîtinên gotaran de du lûtkeyên din ên berbiçav nîşan dide - betlaneyên Sersal û Gulanê.
Hubs
Werin em biçin ser analîza soza hub. Werin em 20 navendên sereke li gorî hejmara dîtinan navnîş bikin:
Ecêb e, di warê dîtinan de navenda herî populer "Ewlehiya Agahdariyê" bû ku di nav 5 serokên herî mezin de "Bernamekirin" û "Zanistiya populer" jî hebûn.
Antitop Gtk û Kakao dagir dike.
Ez ê ji we re sirekekê bibêjim, hubên jorîn jî têne dîtin vir, her çend hejmara dîtinan li wir nayê nîşandan.
Rêjeya
Û di dawiyê de, rêjeya soz. Bi karanîna daneyên analîzkirina hubê, em dikarin gotarên herî populer ên ji bo navendên herî populer ên îsal 2019 nîşan bidin.
Û di dawiyê de, ji bo ku kes aciz nebe, ez ê nirxa navendê ya herî hindik "gtk" bidim. Di nava salekê de hat çapkirin yek gotara, ku di heman demê de "otomatîk" rêza yekem a nirxandinê digire.