Habrastatistics: pagsuhid sa kadaghanan ug pinakagamay nga gibisita nga mga seksyon sa site
Uy Habr.
Π miaging bahin Ang trapiko sa Habr gisusi sumala sa mga nag-unang mga parameter - ang gidaghanon sa mga artikulo, ang ilang mga panan-aw ug mga rating. Bisan pa, ang isyu sa pagkapopular sa mga seksyon sa site nagpabilin nga wala masusi. Nahimong makapaikag ang pagtan-aw niini sa mas detalyado ug pagpangita sa labing inila ug labing dili sikat nga mga hub. Sa katapusan, akong tan-awon ang epekto sa geektimes sa mas detalyado, nga nagtapos sa usa ka bag-ong pagpili sa labing kaayo nga mga artikulo base sa bag-ong ranggo.
Alang sa mga interesado sa nahitabo, ang pagpadayon ubos sa pagputol.
Pahinumdumon ko ikaw sa makausa pa nga ang mga estadistika ug mga rating dili opisyal, wala ako'y bisan unsang kasayuran sa insider. Dili usab garantiya nga wala ako masayop sa usa ka lugar o nasipyat sa usa ka butang. Apan sa gihapon, sa akong hunahuna kini nahimong makapaikag. Magsugod kita sa code una; kadtong dili interesado niini mahimong laktawan ang unang mga seksyon.
Pagkolekta sa datos
Sa una nga bersyon sa parser, ang gidaghanon lamang sa mga pagtan-aw, mga komento ug mga rating sa artikulo ang gikonsiderar. Maayo na kini, apan wala kini magtugot kanimo sa paghimo og mas komplikado nga mga pangutana. Panahon na aron analisahon ang mga tematik nga seksyon sa site; kini magtugot kanimo sa paghimo og makapaikag nga panukiduki, pananglitan, tan-awa kung giunsa ang pagkapopular sa seksyon nga "C++" nausab sa daghang mga tuig.
Ang parser sa artikulo gipauswag, karon gibalik niini ang mga hub diin nahisakop ang artikulo, ingon man ang angga sa tagsulat ug ang iyang rating (daghang makapaikag nga mga butang ang mahimo dinhi, usab, apan kana moabut sa ulahi). Ang datos gitipigan sa usa ka csv file nga ingon niini:
Makadawat kami usa ka lista sa mga nag-unang thematic hub sa site.
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)
Ang function nga find_between ug ang klase sa Str nagpili usa ka pisi taliwala sa duha nga mga tag, gigamit nako kini sa sayo pa. Ang mga tematik nga hub gimarkahan sa usa ka "*" aron kini dali nga ma-highlight, ug mahimo usab nimo i-uncomment ang mga katumbas nga linya aron makakuha mga seksyon sa ubang mga kategorya.
Ang output sa get_hubs function kay usa ka impresibong listahan, nga among gitipigan isip diksyonaryo. Espesyal nga gipresentar nako ang lista sa kinatibuk-an aron imong mabanabana ang gidaghanon niini.
Ang nahabilin nga mga hub gipreserbar sa parehas nga paagi. Karon dali na magsulat usa ka function nga nagbalik sa resulta kung ang artikulo iya sa geektimes o usa ka hub sa profile.
Gipakita namo ang gidaghanon sa gipatik nga mga artikulo gamit ang Matplotlib:
Gibahin nako ang mga artikulo nga "geektimes" ug "geektimes only" sa tsart, tungod kay Ang usa ka artikulo mahimong sakop sa duha ka seksyon sa samang higayon (pananglitan, "DIY" + "microcontrollers" + "C++"). Gigamit nako ang ngalan nga "profile" aron ipasiugda ang mga artikulo sa profile sa site, bisan kung tingali ang English nga termino nga profile alang niini dili hingpit nga husto.
Sa miaging bahin nangutana kami bahin sa "geektimes effect" nga nalangkit sa pagbag-o sa mga lagda sa pagbayad alang sa mga artikulo alang sa geektimes sugod karong ting-init. Atong ipakita nga gilain ang mga artikulo sa geektimes:
Makaiikag ang resulta. Ang gibanabana nga ratio sa mga pagtan-aw sa mga artikulo sa geektimes sa kinatibuk-an naa sa usa ka lugar sa 1:5. Apan samtang ang kinatibuk-ang gidaghanon sa mga pagtan-aw mamatikdan nga nag-usab-usab, ang pagtan-aw sa "kalingawan" nga mga artikulo nagpabilin sa halos parehas nga lebel.
Mamatikdan usab nimo nga ang kinatibuk-ang gidaghanon sa mga pagtan-aw sa mga artikulo sa seksyon nga "geektimes" nahulog gihapon pagkahuman gibag-o ang mga lagda, apan "pinaagi sa mata", nga dili molapas sa 5% sa kinatibuk-ang kantidad.
Makapainteres nga tan-awon ang kasagaran nga gidaghanon sa mga pagtan-aw matag artikulo:
Alang sa mga artikulo nga "kalingawan" kini mga 40% labaw sa kasagaran. Tingali dili kini ikatingala. Ang kapakyasan sa sinugdanan sa Abril dili klaro kanako, tingali mao kana ang nahitabo, o kini usa ka matang sa sayup nga pag-parse, o tingali usa sa mga geektimes nga mga tagsulat miadto sa bakasyon;).
Pinaagi sa dalan, ang graph nagpakita sa duha pa ka mamatikdan nga peak sa gidaghanon sa mga panglantaw sa mga artikulo - ang Bag-ong Tuig ug Mayo holidays.
Mga Hub
Mopadayon kita sa gisaad nga pagtuki sa mga hub. Atong ilista ang top 20 hubs sa gidaghanon sa view:
Katingad-an, ang pinakapopular nga hub sa mga termino sa mga panan-aw mao ang "Seguridad sa Impormasyon"; ang nanguna nga 5 nga mga lider naglakip usab sa "Programming" ug "Popular science".
Ang Antitop nag-okupar sa Gtk ug Cocoa.
Isulti ko kanimo ang usa ka sekreto, ang mga top hub makita usab dinhi, bisan tuod ang gidaghanon sa mga pagtan-aw wala gipakita didto.
Rating
Ug sa katapusan, ang gisaad nga rating. Gamit ang datos sa pag-analisa sa hub, mahimo namong ipakita ang labing inila nga mga artikulo para sa labing inila nga mga hub para karong tuiga 2019.
Ug sa katapusan, aron walay masakitan, akong ihatag ang rating sa labing gamay nga gibisita nga hub nga "gtk". Sulod sa usa ka tuig kini gimantala usa Ang artikulo, nga "awtomatikong" usab nag-okupar sa unang linya sa rating.