Pan ddaeth Olivier y Flwyddyn Newydd i ben, doedd gen i ddim byd i'w wneud, a phenderfynais lawrlwytho'r holl erthyglau o Habrahabr (a llwyfannau cysylltiedig) i'm cyfrifiadur ac archwilio.
Cafwyd sawl stori ddifyr. Y cyntaf ohonynt yw datblygiad fformat a phynciau erthyglau dros y 12 mlynedd o fodolaeth y wefan. Er enghraifft, mae dynameg rhai pynciau yn eithaf dangosol. Parhad - o dan y toriad.

Proses dosrannu
Er mwyn deall sut y datblygodd Habr, roedd angen mynd trwy ei holl erthyglau a thynnu meta-wybodaeth ohonynt (er enghraifft, dyddiadau). Roedd y ffordd osgoi yn hawdd, oherwydd mae dolenni i bob erthygl yn edrych fel "habrahabr.ru/post/337722/", ac mae'r niferoedd yn cael eu rhoi mewn trefn gaeth. Gan wybod bod gan y post diwethaf rif ychydig yn llai na 350 mil, es i trwy'r holl ID dogfen posib mewn dolen (cod Python):
import numpy as np
from multiprocessing import Pool
with Pool(100) as p:
docs = p.map(download_document, np.arange(350000))Swyddogaeth download_document yn ceisio llwytho'r dudalen gyda'r id cyfatebol ac yn ceisio tynnu gwybodaeth ystyrlon o'r strwythur html.
import requests
from bs4 import BeautifulSoup
def download_document(pid):
""" Download and process a Habr document and its comments """
# выгрузка документа
r = requests.get('https://habrahabr.ru/post/' +str(pid) + '/')
# парсинг документа
soup = BeautifulSoup(r.text, 'html5lib') # instead of html.parser
doc = {}
doc['id'] = pid
if not soup.find("span", {"class": "post__title-text"}):
# такое бывает, если статья не существовала или удалена
doc['status'] = 'title_not_found'
else:
doc['status'] = 'ok'
doc['title'] = soup.find("span", {"class": "post__title-text"}).text
doc['text'] = soup.find("div", {"class": "post__text"}).text
doc['time'] = soup.find("span", {"class": "post__time"}).text
# create other fields: hubs, tags, views, comments, votes, etc.
# ...
# сохранение результата в отдельный файл
fname = r'files/' + str(pid) + '.pkl'
with open(fname, 'wb') as f:
pickle.dump(doc, f)Yn y broses o ddosrannu, darganfyddais sawl peth newydd.
Yn gyntaf, maen nhw'n dweud bod creu mwy o brosesau nag sydd o greiddiau yn y prosesydd yn ddiwerth. Ond yn fy achos i, daeth i'r amlwg nad y prosesydd yw'r adnodd cyfyngu, ond y rhwydwaith, ac mae 100 o brosesau'n gweithio'n gyflymach na 4 neu, dyweder, 20.
Yn ail, mewn rhai postiadau roedd cyfuniadau o nodau arbennig - er enghraifft, canmoliaethau fel "%&#@". Mae'n troi allan hynny html.parser, a ddefnyddiais gyntaf, yn ymateb i'r cyfuniad &# yn boenus, gan ei ystyried yn ddechrau'r endid html. Roeddwn eisoes yn mynd i wneud hud du, ond awgrymodd y fforwm y gallwch chi newid y parser.
Yn drydydd, llwyddais i ddadlwytho pob cyhoeddiad, heblaw am dri. Cafodd dogfennau rhif 65927, 162075, a 275987 eu dileu ar unwaith gan fy gwrthfeirws. Erthyglau yw'r rhain, yn y drefn honno, am gadwyn javascript sy'n lawrlwytho pdf maleisus, meddalwedd ransom SMS ar ffurf set o ategion porwr, a gwefan CrashSafari.com sy'n anfon iPhones i ailgychwyn. Antivirus darganfod erthygl arall yn ddiweddarach, yn ystod sgan system: post 338586 am sgriptiau ar y wefan siop anifeiliaid anwes sy'n defnyddio prosesydd y defnyddiwr i mwyngloddio cryptocurrency. Felly gallwn ystyried bod gwaith y gwrthfeirws yn eithaf digonol.
"Byw" erthyglau drodd allan i fod dim ond hanner yr uchafswm posibl - 166307 darn. Ynglŷn â'r gweddill, mae Habr yn rhoi opsiynau "mae'r dudalen wedi dyddio, wedi'i dileu neu nid oedd yn bodoli o gwbl." Wel, gall unrhyw beth ddigwydd.
Dilynwyd llwytho erthyglau gan waith technegol: er enghraifft, bu'n rhaid trosi dyddiadau cyhoeddi o'r fformat "'21 Rhagfyr 2006 am 10:47 am" i'r safon datetime, a "12,8k" golygfeydd - yn 12800. Ar yr adeg hon, daeth ychydig mwy o ddigwyddiadau allan. Mae'r un mwyaf doniol yn ymwneud â chyfrif pleidleisiau a mathau o ddata: roedd gan rai o'r hen swyddi orlifiad mewnol a chawsant 65535 o bleidleisiau yr un.

O ganlyniad, cymerodd testunau erthyglau (heb luniau) 1.5 gigabeit i mi, sylwadau gyda meta-wybodaeth - 3 arall, a thua cant megabeit - meta-wybodaeth am erthyglau. Gellir cadw hyn yn gyfan gwbl mewn RAM, a oedd yn syndod pleserus i mi.
Dechreuais y dadansoddiad o erthyglau nid o'r testunau eu hunain, ond o feta-wybodaeth: dyddiadau, tagiau, canolbwyntiau, golygfeydd a hoff bethau. Mae'n troi allan y gallai hi ddweud llawer.
Tueddiadau Datblygu Habrahabr
Mae erthyglau ar y safle wedi'u cyhoeddi ers 2006; fwyaf dwys - yn 2008-2016.

Nid yw mor hawdd i'w asesu pa mor weithredol y darllenwyd yr erthyglau hyn ar wahanol adegau. Derbyniodd testunau o 2012 ac iau fwy o sylwadau a sgôr, ond mae gan destunau mwy newydd fwy o safbwyntiau a nodau tudalen. Roedd y metrigau hyn yn ymddwyn yr un ffordd (haneru) unwaith yn unig, yn 2015. Efallai, mewn sefyllfa o argyfwng economaidd a gwleidyddol, fod sylw darllenwyr wedi symud o flogiau TG i faterion mwy poenus.

Yn ogystal â'r erthyglau eu hunain, fe wnes i lawrlwytho mwy o sylwadau iddyn nhw. Cafwyd 6 miliwn o sylwadau, fodd bynnag, gwaharddwyd 240 mil ohonynt ("hedfan UFO i mewn a chyhoeddi'r arysgrif yma"). Nodwedd ddefnyddiol o sylwadau yw bod ganddynt stamp amser. Trwy astudio amser sylwadau, gallwch chi ddeall yn fras pryd mae erthyglau'n cael eu darllen o gwbl.
Daeth i'r amlwg bod y rhan fwyaf o'r erthyglau wedi'u hysgrifennu a bod sylwadau arnynt yn rhywle rhwng 10 am ac 20 pm, h.y. ar ddiwrnod gwaith arferol ym Moscow. Gall hyn olygu bod Habr yn cael ei ddarllen at ddibenion proffesiynol, a bod hyn yn ffordd dda o oedi yn y gwaith. Gyda llaw, mae'r dosbarthiad hwn o'r amser yn sefydlog o sylfaen Habr hyd heddiw.

Fodd bynnag, nid yr amser o'r dydd yw prif fantais stamp amser sylw, ond hyd "bywyd actif" yr erthygl. Cyfrifais sut mae'r amser yn cael ei ddosbarthu o gyhoeddi'r erthygl i'w sylw. Daeth i'r amlwg bod y sylw canolrifol (llinell werdd) bellach yn dod mewn tua 20 awr, h.y. ar y diwrnod cyntaf ar ôl cyhoeddi, ar gyfartaledd, mae ychydig mwy na hanner yr holl sylwadau ar yr erthygl ar ôl. Ac mewn dau ddiwrnod maen nhw'n gadael 75% o'r holl sylwadau. Ar yr un pryd, darllenwyd erthyglau cynharach hyd yn oed yn gyflymach - er enghraifft, yn 2010, daeth hanner y sylwadau yn ystod y 6 awr gyntaf.

Daeth yn syndod i mi fod sylwadau wedi ymestyn: mae nifer cyfartalog y cymeriadau mewn sylw bron wedi dyblu dros oes Habr!

Mae adborth haws na sylwadau yn bleidleisiau. Yn wahanol i lawer o adnoddau eraill, ar Habré gallwch chi roi nid yn unig manteision, ond hefyd anfanteision. Fodd bynnag, nid yw darllenwyr yn defnyddio’r cyfle olaf mor aml: mae cyfran bresennol y cas bethau tua 15% o’r holl bleidleisiau a fwriwyd. Arferai fod mwy, ond dros amser, mae darllenwyr wedi dod yn fwy caredig.

Mae'r testunau eu hunain wedi newid dros amser. Er enghraifft, nid yw hyd nodweddiadol y testun yn stopio tyfu'n gyson o lansiad y wefan, er gwaethaf yr argyfyngau. Mewn degawd, mae testunau bron ddeg gwaith yn hirach!

Newidiodd arddull y testunau (i frasamcan cyntaf) hefyd. Yn ystod blynyddoedd cyntaf bodolaeth Habr, er enghraifft, cynyddodd y gyfran o god a rhifau mewn testunau:

Ar ôl deall dynameg cyffredinol y wefan, penderfynais fesur sut y newidiodd poblogrwydd gwahanol bynciau. Gellir dewis pynciau yn awtomatig o destunau, ond i ddechrau, ni allwch ailddyfeisio'r olwyn, ond defnyddiwch dagiau parod wedi'u gosod gan awduron pob erthygl. Rwyf wedi llunio pedwar tueddiad nodweddiadol ar y siart. Roedd y thema "Google" yn dominyddu i ddechrau (efallai yn bennaf oherwydd SEO), ond mae wedi bod yn colli pwysau dros y blynyddoedd. Mae Javascript wedi bod yn bwnc poblogaidd ac mae'n parhau i dyfu'n araf, ond dim ond yn ystod y blynyddoedd diwethaf y mae dysgu peirianyddol wedi dechrau ennill poblogrwydd yn gyflym. Mae Linux, ar y llaw arall, wedi aros yr un mor berthnasol trwy gydol y degawd.

Wrth gwrs, dechreuais ymddiddori ym mha bynciau sy'n denu mwy o weithgarwch darllenwyr. Cyfrifais ganolrif nifer y safbwyntiau, y pleidleisiau a'r sylwadau ym mhob pwnc. Dyma beth ddigwyddodd:
- Y pynciau yr edrychir arnynt fwyaf: arduino, dylunio gwe, datblygu gwe, crynhoad, dolenni, css, html, html5, nginx, algorithmau.
- Y pynciau mwyaf "hoffi": vkontakte, hiwmor, jquery, opera, c, html, datblygu gwe, html5, css, dylunio gwe.
- Y pynciau a drafodwyd fwyaf: opera, skype, llawrydd, vkontakte, ubuntu, gwaith, nokia, nginx, arduino, firefox.
Gyda llaw, gan fy mod i'n cymharu pynciau, gallwch chi eu rhestru yn ôl amlder (a chymharu'r canlyniadau â ).
- Am holl flynyddoedd bodolaeth Habr, y tagiau mwyaf poblogaidd (mewn trefn ddisgynnol) yw google, android, javascript, microsoft, linux, php, apple, java, python, rhaglennu, cychwyniadau, datblygu, ios, cychwyn, rhwydweithiau cymdeithasol
- Yn 2017, y rhai mwyaf poblogaidd oedd javascript, python, java, android, datblygu, linux, c ++, rhaglennu, php, c#, ios, dysgu peiriant, diogelwch gwybodaeth, microsoft, react
Wrth gymharu'r graddfeydd hyn, gellir talu sylw, er enghraifft, i orymdaith fuddugol Python a difodiant php, neu i "machlud" pynciau cychwyn a chynnydd dysgu peiriant.
Nid oes gan bob tag ar Habré liw thematig mor amlwg. Er enghraifft, dyma ddwsin o dagiau a gyfarfu unwaith yn unig, ond yn ymddangos yn ddoniol i mi. Felly: "syniad yw grym gyrru'r cynnydd", "cist o ddelwedd disg hyblyg", "Talaith Iowa", "drama", "superalesh", "injan stêm", "pethau i'w gwneud ddydd Sadwrn", "mae gen i llwynog mewn grinder cig", "a mae'n troi allan fel bob amser", "ni allem feddwl am dagiau doniol". Er mwyn pennu pwnc erthyglau o'r fath, nid yw tagiau'n ddigon - bydd yn rhaid i chi wneud modelu thematig ar destunau'r erthyglau.
Bydd dadansoddiad manylach o gynnwys yr erthyglau yn y post nesaf. Yn gyntaf, rydw i'n mynd i adeiladu model sy'n rhagweld nifer y golygfeydd tudalennau ar gyfer erthygl yn seiliedig ar ei gynnwys. Yn ail, rwyf am ddysgu'r rhwydwaith niwral i gynhyrchu testunau yn yr un arddull ag awduron Habr. Felly tanysgrifiwch 🙂
PS A dyma'r bîp .
Ffynhonnell: hab.com
