Quomodo parsed Habr, pars 1: trends

Novo anno Olivier absoluto nihil facere habui, et omnia capitula ab Habrahabr (et suggesta cognata) ad computatorium meum explorandum decrevi.

Plures fabulae interesting fuerunt. Prima earum est evolutio formae et argumenta articulorum supra 12 annos exsistentiae situs. Exempli gratia, dynamica quaedam argumenta satis indicativa sunt. Continuatio — sub cut.

Quomodo parsed Habr, pars 1: trends

Parsing processus

Ad intellegendum quomodo Habr evolvatur, necesse erat per omnes eius articulos transire et meta-informationes ex illis extrahere (exempli gratia dates). Bypass facilis erat, quia nexus omnium articulorum "habrahabr.ru/post/337722/" apparent, et numeri stricte ordine dati sunt. Sciens ultimam tabellam numerum paulo minus quam 350 mille habere, per omnia documentum possibile id in ansa perrexi (Pythonis codicem);

import numpy as np
from multiprocessing import Pool
with Pool(100) as p:
    docs = p.map(download_document, np.arange(350000))

munus download_document paginam cum id respondentibus onerare conatur ac significationem significantem ex HTML compagine extrahere conatur.

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)

In processu parsing, plura nova inveni.

Primo, dicunt quod plures processus creando quam metretas in processu est inutilis. Sed in casu meo accidit ut limitandi subsidii non processus, sed retis, et 100 processuum velocius quam IIII vel, dic XX elaborare.

Secundo, in quibusdam stationibus erant coniunctiones specialium notarum, exempli gratia, euphemismi sicut "%&#@". Versa est html.parserquae ego primo redundat ad iuncturam &# graviter considerans initium rei html. Magicam nigram iam facturus eram, sed forum suggessit te modo posse mutare parser.

Tertio, omnes publicationes potui exonerare, exceptis tribus. Documenta numerata 65927, 162075 et 275987 ab antiviro meo statim deleta sunt. Articuli haec sunt, respective, de catena html quae malevoli pdf , redemptio SMS in forma certae plugins navigandi downloads, et situs CrashSafari.com qui iPhones in reboot mittit. Antivirus alium articulum postea invenit, in schedula systematis: post 338586 de scriptoribus in repositoria electronica quae utentis processus ad cryptocurrency meum utebatur. Itaque opus antiviri satis adaequatum considerare possumus.

"Vive" capitula evasit solum dimidium potentiae maximum - 166307 frusta. De reliquis, Habr optiones dat "pagina exoleta, deleta est vel nulla exstitit". Bene aliquid evenire potest.

Articulorum uploading opus technicum secutum est: exempli gratia, dies publicationes ex forma convertendae "'21 Decembris 2006 at 10:47 sum" ad vexillum datetimeac "12,8k" opiniones - in 12800. Hac in re plura pauca evenerunt. Funniest una cum suffragiis comitum ac notitiarum typi: nonnullae antiquae stipes int redundantiam habuerunt et 65535 suffragia singula receperunt.

Quomodo parsed Habr, pars 1: trends

Quam ob rem textus articulorum (sine imaginibus) me 1.5 gigabytes, commenta cum meta-information - alia 3, et circiter centum megabytarum - meta-informationum articulorum. Hoc in RAM omnino servari potest, quod mihi mirum fuit iucundum.

Analysin articulorum incepi non ex ipsis textibus, sed ex meta-informationibus: dates, tags, axibus, sententiis et similibus. Contigit quod multa narrare posset.

Habrahabr Trends Development

Articuli de situ ab anno 2006 editi sunt; maximopere - in 2008-2016.

Quomodo parsed Habr, pars 1: trends

Haec quam active diversis temporibus lecta sint, non tam facile est aestimare. Textus a MMXII et iuniores plures commentationes et aestimationes acceperunt, sed recentiores textus plures sententias et notas habent. Haec metrica eodem modo (dimidiata) semel tantum, in MMXV. Fortasse, in statu crisi oeconomicae et politicae, lectorum attentio ab IT diario ad quaestiones acerbiores deflexit.

Quomodo parsed Habr, pars 1: trends

Praeter ipsos articulos, plura commentaria ad eas retuli. VI decies commenta sunt, sed CCXL milia ex his interdictum est ("a UFO volavit et hanc inscriptionem evulgavit"). Utilis proprietas commentariorum est quod tempus figurae habent. Tempus commentandi studens, cum articulis omnino legantur, aspere intelligere potes.

Contigit pleraque capitula tum scripta et commentata alicubi ab 10 sum ad 20 post meridiem, i.e. in typicam Moscoviae die operantes. Hoc fortasse significare potest quod Habr legatur ad usus professionales, et hoc modo bene operandi procrastinandi. Obiter haec distributio temporis diei stabilis est ab ipso fundamento Habr usque in hodiernum diem.

Quomodo parsed Habr, pars 1: trends

Praecipuum autem temporis notam commentarium non est tempus, sed tempus "activa" vitae dictum. Ego quomodo tempus ab publicatione articuli ad suum commentarium distributum sit. Contigit quod nunc commentarium medianum (linea viridis) venit in circiter XX horas, i.e. primo die post publicationem mediocris, paulo plus dimidium omnium commentorum articuli supersunt. Et duobus diebus 20% omnium commentarios relinquunt. Eodem tempore, priora capitula etiam citius legebantur - exempli gratia, anno 75, dimidium commentariorum in VI horis primis venerat.

Quomodo parsed Habr, pars 1: trends

Mirum mihi factum est quod commentarios prolongaverunt: mediocris numerus characterum in commento paene duplicatus est in vita Habr!

Quomodo parsed Habr, pars 1: trends

Facilius opiniones quam commentationes suffragiorum sunt. Multas alias facultates dissimiles habebis non solum pluses, sed etiam minuses habere potes. Attamen lectores ultimam opportunitatem non ita saepe utuntur: praesens pars fastidiorum est circa 15% omnium suffragiorum eiecta. Ibi plus solebat, sed tempore lectores benigniores facti sunt.

Quomodo parsed Habr, pars 1: trends

Textus ipsi tempore mutati sunt. Exempli gratia, typica longitudo textus non cessat ab ipso situ, non obstante discrimine, crescere constanter. In decenniis textus paene decem partibus longiores facti sunt!

Quomodo parsed Habr, pars 1: trends

Stylus textuum (ad primam approximationem) etiam mutatur. Primis annis exsistentiae Habr, exempli gratia, participatio codicis et numeri in textibus aucta sunt;

Quomodo parsed Habr, pars 1: trends

Postquam altiore motus situs intellexit, decrevi metiri quomodo favore variarum rerum mutatarum sit. Argumenta sponte e textibus selecta possunt, sed imprimis, rotam revellere non potes, sed textis confectis ab auctoribus cuiusque articuli appositis utere. Quattuor trends typica in charta posui. Thema "Google" initio dominatus est (fortasse maxime ob SEO), sed pondus per annos amissum est. Javascript topic popularis fuit et paulatim crescere pergit, sed apparatus discendi in annis proximis tantum popularitatem celeriter incepit. Linux autem per decennium aeque ad rem pertinet.

Quomodo parsed Habr, pars 1: trends

Nimirum factus sum interested in quibus argumenta magis lectorem activitatis alliciant. Medianum numerum sententiarum, suffragiorum et commentariorum in unoquoque argumento computavi. Ecce quod factum est;

  • Argumenta maxime spectata: arduino, designatio interretiali, explicatio interretialis, digesta, nexus, css, html, html5, nginx, algorithms.
  • Argumenta maxime "amavit": vkontakte, humor, jquery, opera, c, html, evolutionis interreti, html5, css, ratio interretialis.
  • Argumenta gravissima: opera, skype, justo, vkontakte, Decuria, opus, nokia, nginx, arduino, incendia.

Obiter, cum locos comparem, frequentia ea praeponere potes (et proventus cum comparo similis articulus ex MMXIII).

  • Omnes enim anni exsistentiae Habr, populares tags (in ordine descendendo) sunt google, android, javascript, microsoft, linux, php, pomum, java, python, programmatio, startups, progressus, ios, satus, socialis retiacula.
  • In 2017, populares erant JavaScript, python, java, android, progressio, linux, c++, programmatio, php, c#, ios, apparatus discendi, informationis securitatis, microsoft, react

Cum has aestimationes comparet, attendere potest, exempli gratia, victori Pythonis iter et exstinctionem php, seu ad "occasum" satum locorum ac machinae discendi ortum.

Non omnia tags in Habré habent tam manifestam thematicam fuco. Exempli gratia, hic sunt duodecim tags quod semel tantum occurrit, sed solum mihi ridiculum videbatur. Ita: "idea est vis incessus progressus", "tabernus ex imaginis disci floppy", "Iowa State", "drama", "superalesh", "machinam vaporis", "rerum ad faciendum die Saturni", "habeo vulpecula in escam molentis", "vir semper evenit", "non potuimus per ridiculas tags ascendere". Ad determinare subiectum talium articulorum, tags non sufficit - exemplum thematicum exsequi debebit textuum capitulorum.

Accuratior analysis contentorum articulorum in proximo poste erit. Primum, exemplar aedificaturus sum quod numerum paginarum sententiarum praedicat pro articulo contento innixo. Secundo, volo docere retis neuralis generare textus eodem stylo ac auctores Habr. Ita subscribe

PS Et hic est beeped dataset.

Source: www.habr.com

Add a comment