Mar a rinn mi parsadh air Habr, pàirt 1: gluasadan

Nuair a bha Olivier na Bliadhn 'Ùire deiseil, cha robh dad agam ri dhèanamh, agus chuir mi romhpa na h-artaigilean gu lèir bho Habrahabr (agus àrd-ùrlaran co-cheangailte) a luchdachadh sìos chun choimpiutair agam agus sgrùdadh.

Bha grunn sgeulachdan inntinneach ann. Is e a’ chiad fhear dhiubh leasachadh cruth agus cuspairean artaigilean thairis air na bliadhnaichean 12 bho bhith an làrach. Mar eisimpleir, tha daineamaigs cuid de chuspairean gu math taisbeanach. Leantainn - fon ghearradh.

Mar a rinn mi parsadh air Habr, pàirt 1: gluasadan

Pròiseas parsadh

Gus tuigse fhaighinn air mar a leasaich Habr, bha e riatanach a dhol tro na h-artaigilean aige gu lèir agus meata-fhiosrachadh a tharraing bhuapa (mar eisimpleir, cinn-latha). Bha an seach-rathad furasta, oir tha ceanglaichean gu gach artaigil coltach ri “habrahabr.ru/post/337722/”, agus tha na h-àireamhan air an toirt seachad gu teann ann an òrdugh. Le fios gu bheil àireamh beagan nas lugha na 350 mìle aig a’ phost mu dheireadh, chaidh mi tro gach id sgrìobhainn a dh’ fhaodadh a bhith ann an lùb (còd Python):

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

gnìomh download_document a’ feuchainn ris an duilleag a luchdachadh leis an id fhreagarrach agus a’ feuchainn ri fiosrachadh brìoghmhor a thoirt a-mach à structar 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)

Ann am pròiseas parsadh, lorg mi grunn rudan ùra.

An toiseach, tha iad ag ràdh gu bheil cruthachadh barrachd phròiseasan na tha coraichean sa phròiseasar gun fheum. Ach anns a 'chùis agam, thionndaidh e a-mach nach e an goireas cuingealaichte am pròiseasar, ach an lìonra, agus bidh pròiseasan 100 ag obair a-mach nas luaithe na 4 no, can, 20.

San dàrna h-àite, ann an cuid de phuist bha measgachadh de charactaran sònraichte - mar eisimpleir, euphemisms mar “%&#@”. Thionndaidh e a-mach sin html.parser, a chleachd mi an toiseach, a’ freagairt ris a’ chothlamadh &# gu pianail, a’ beachdachadh air mar thoiseach an eintiteas html. Bha mi mu thràth a’ dol a dhèanamh draoidheachd dhubh, ach mhol am fòram gun urrainn dhut am parser atharrachadh.

San treas àite, chaidh agam air a h-uile foillseachadh a luchdachadh sìos, ach a-mhàin trì. Chaidh sgrìobhainnean leis an àireamh 65927, 162075, agus 275987 a dhubhadh às sa bhad leis an antivirus agam. Is iad sin artaigilean, fa leth, mu shreath javascript a bhios a’ luchdachadh sìos pdf droch-rùnach, SMS ransomware ann an cruth seata de plugins brabhsair, agus an làrach CrashSafari.com a chuireas iPhones gu ath-thòiseachadh. Lorg Antivirus artaigil eile nas fhaide air adhart, rè scan siostam: post 338586 mu sgriobtaichean air làrach-lìn stòr peata a bhios a’ cleachdadh pròiseasar an neach-cleachdaidh gus cryptocurrency a mhèinneadh. Mar sin faodaidh sinn beachdachadh air obair an antivirus a tha gu math iomchaidh.

Thionndaidh artaigilean “Live” a-mach mar dìreach leth den ìre as àirde a dh’ fhaodadh a bhith ann - pìosan 166307. Mun chòrr, tha Habr a’ toirt seachad roghainnean “tha an duilleag seann-fhasanta, chaidh a sguabadh às no cha robh i ann idir.” Uill, faodaidh rud sam bith tachairt.

Às deidh luchdachadh suas artaigilean chaidh obair theicnigeach a dhèanamh: mar eisimpleir, dh'fheumadh cinn-latha foillseachaidh a bhith air an atharrachadh bhon chruth "'21 Dùbhlachd 2006 aig 10:47m" chun na h-ìre àbhaisteach. datetime, agus seallaidhean "12,8k" - ann an 12800. Aig an ìre seo, chaidh beagan thachartasan eile a-mach. Tha an tè as èibhinn co-cheangailte ri cunntasan bhòtaichean agus seòrsachan dàta: bha cus thar-shruth aig cuid de sheann phuist agus fhuair iad 65535 bhòt gach fear.

Mar a rinn mi parsadh air Habr, pàirt 1: gluasadan

Mar thoradh air an sin, thug teacsaichean artaigilean (gun dealbhan) mi 1.5 gigabytes, beachdan le meta-fhiosrachadh - 3 eile, agus timcheall air ceud megabytes - meta-fiosrachadh mu artaigilean. Faodar seo a chumail gu tur ann an RAM, rud a bha na iongnadh tlachdmhor dhomh.

Thòisich mi air mion-sgrùdadh artaigilean chan ann bho na teacsaichean fhèin, ach bho mheata-fhiosrachadh: cinn-latha, tagaichean, mòr-ionadan, beachdan agus rudan as toil leat. Thionndaidh e a-mach gun robh i comasach air mòran innse.

Claonaidhean leasachaidh Habrahabr

Tha artaigilean air an làrach air am foillseachadh bho 2006; as dian - ann an 2008-2016.

Mar a rinn mi parsadh air Habr, pàirt 1: gluasadan

Chan eil e cho furasta a mheasadh dè cho gnìomhach sa chaidh na h-artaigilean sin a leughadh aig diofar amannan. Fhuair teacsaichean bho 2012 agus nas òige barrachd bheachdan agus rangachadh, ach tha barrachd bheachdan agus comharran leabhraichean aig teacsaichean nas ùire. Bha na meatrach sin gan giùlan fhèin san aon dòigh (leth) dìreach aon turas, ann an 2015. Is dòcha, ann an suidheachadh èiginn eaconamach is poilitigeach, gu bheil aire luchd-leughaidh air gluasad bho bhlogan IT gu cùisean nas dorra.

Mar a rinn mi parsadh air Habr, pàirt 1: gluasadan

A bharrachd air na h-artaigilean fhèin, luchdaich mi sìos barrachd bheachdan thuca. Bha 6 millean beachdan ann, ge-tà, chaidh 240 mìle dhiubh a thoirmeasg ("Thàinig UFO a-steach agus dh'fhoillsich e an sgrìobhadh seo an seo"). Is e feart feumail de bheachdan gu bheil stampa ùine aca. Le bhith a’ sgrùdadh àm nam beachdan, tuigidh tu gu garbh cuin a thèid artaigilean a leughadh idir.

Thionndaidh e a-mach gu bheil a ’mhòr-chuid de na h-artaigilean an dà chuid sgrìobhte agus air an toirt seachad an àiteigin bho 10m gu 20f, i.e. air latha obrach àbhaisteach ann am Moscow. Dh’fhaodadh seo a bhith a’ ciallachadh gu bheil Habr air a leughadh airson adhbharan proifeiseanta, agus gur e dòigh mhath a tha seo air a bhith a’ foillseachadh san obair. Air an t-slighe, tha an sgaoileadh seo de àm an latha seasmhach bho bhun-stèidh Habr chun an latha an-diugh.

Mar a rinn mi parsadh air Habr, pàirt 1: gluasadan

Ach, chan e prìomh bhuannachd stampa-ama beachd an àm den latha, ach fad “beatha ghnìomhach” an artaigil. Rinn mi cunntas air mar a tha an ùine air a sgaoileadh bho fhoillseachadh an artaigil gu a bheachd. Thionndaidh e a-mach gu bheil a-nis am beachd meadhanach (loidhne uaine) a ’tighinn a-steach timcheall air 20 uair, i.e. air a’ chiad latha às deidh fhoillseachadh, gu cuibheasach, tha beagan a bharrachd air leth de na beachdan air an artaigil air fhàgail. Agus ann an dà latha fàgaidh iad 75% de na beachdan uile. Aig an aon àm, chaidh artaigilean nas tràithe a leughadh eadhon nas luaithe - mar eisimpleir, ann an 2010, thàinig leth de na beachdan anns a 'chiad 6 uairean.

Mar a rinn mi parsadh air Habr, pàirt 1: gluasadan

Chuir e iongnadh orm gu bheil beachdan air leudachadh: tha an àireamh chuibheasach de charactaran ann am beachd cha mhòr air dùblachadh thar beatha Habr!

Mar a rinn mi parsadh air Habr, pàirt 1: gluasadan

Tha beachdan air ais nas fhasa na bhòtaichean. Eu-coltach ri mòran ghoireasan eile, air Habré faodaidh tu a bhith a ’cur chan e a-mhàin buannachdan, ach cuideachd minuses. Ach, cha bhith luchd-leughaidh a’ cleachdadh a’ chothruim mu dheireadh cho tric: tha a’ chuibhreann a th’ ann de rudan nach toil leotha an-dràsta mu 15% de na bhòtaichean air fad a chaidh a chur. B’ àbhaist barrachd a bhith ann, ach thar ùine, tha luchd-leughaidh air fàs nas caoimhneil.

Mar a rinn mi parsadh air Habr, pàirt 1: gluasadan

Tha na teacsaichean fhèin air atharrachadh thar ùine. Mar eisimpleir, chan eil fad àbhaisteach an teacsa a 'stad a' fàs gu cunbhalach bho bhith a 'cur air bhog an làrach, a dh' aindeoin na h-èiginn. Ann an deich bliadhna, tha teacsaichean air fàs faisg air deich tursan nas fhaide!

Mar a rinn mi parsadh air Habr, pàirt 1: gluasadan

Dh'atharraich stoidhle nan teacsaichean (gu ciad tuairmse) cuideachd. Anns na ciad bhliadhnaichean de bhith ann Habr, mar eisimpleir, mheudaich an roinn de chòd agus àireamhan ann an teacsaichean:

Mar a rinn mi parsadh air Habr, pàirt 1: gluasadan

Às deidh dhomh tuigse fhaighinn air daineamaigs iomlan na làraich, chuir mi romham tomhas mar a dh’ atharraich fèill nan diofar chuspairean. Faodar cuspairean a thaghadh gu fèin-ghluasadach bho theacsaichean, ach airson tòiseachadh, chan urrainn dhut a ’chuibhle ath-thòiseachadh, ach cleachd tagaichean deiseil air an ceangal le ùghdaran gach artaigil. Tha mi air ceithir gluasadan àbhaisteach a tharraing air a’ chairt. Bha smachd aig a’ chuspair “Google” an toiseach (is dòcha gu ìre mhòr air sgàth SEO), ach tha e air a bhith a’ call cuideam thar nam bliadhnaichean. Tha Javascript air a bhith na chuspair mòr-chòrdte agus tha e fhathast a’ fàs gu slaodach, ach tha ionnsachadh innealan air tòiseachadh a’ fàs mòr-chòrdte dìreach anns na bliadhnachan mu dheireadh. Tha Linux, air an làimh eile, air a bhith a cheart cho buntainneach tron ​​deichead.

Mar a rinn mi parsadh air Habr, pàirt 1: gluasadan

Gu dearbh, ghabh mi ùidh anns na cuspairean a tharraingeas barrachd gnìomhachd leughadair. Rinn mi cunntas air an àireamh mheadhanach de bheachdan, bhòtaichean agus bheachdan anns gach cuspair. Seo na thachair:

  • Cuspairean as motha a chaidh fhaicinn: arduino, dealbhadh lìn, leasachadh lìn, cnàmhadh, ceanglaichean, css, html, html5, nginx, algorithms.
  • Na cuspairean as mòr-chòrdte: vkontakte, àbhachdas, jquery, opera, c, html, leasachadh lìn, html5, css, dealbhadh lìn.
  • Na cuspairean as motha a chaidh a dheasbad: opera, skype, neo-cheangailte, vkontakte, ubuntu, obair, nokia, nginx, arduino, firefox.

Co-dhiù, leis gu bheil mi a’ dèanamh coimeas eadar cuspairean, faodaidh tu an rangachadh a rèir tricead (agus coimeas a dhèanamh eadar na toraidhean le artaigil coltach ris bho 2013).

  • Airson a h-uile bliadhna de bhith ann Habr, is e na tagaichean as mòr-chòrdte (ann an òrdugh teàrnaidh) google, android, javascript, microsoft, linux, php, apple, java, python, prògramadh, tòiseachadh, leasachadh, ios, tòiseachaidh, lìonraidhean sòisealta
  • Ann an 2017, b’ e an fheadhainn as mòr-chòrdte javascript, python, java, android, leasachadh, linux, c ++, prògramadh, php, c #, ios, ionnsachadh inneal, tèarainteachd fiosrachaidh, microsoft, freagairt

Nuair a thathar a’ dèanamh coimeas eadar na rangachadh sin, faodaidh aon aire a thoirt, mar eisimpleir, do chaismeachd shoirbheachail Python agus mar a chaidh php a-mach à bith, no do “dol fodha na grèine” de chuspairean tòiseachaidh agus àrdachadh ionnsachadh innealan.

Chan eil dath cho follaiseach aig a h-uile tag air Habré. Mar eisimpleir, seo dusan tag nach do choinnich ach aon turas, ach a bha dìreach èibhinn dhomh. Mar sin: “is e beachd am prìomh adhbhar airson adhartas”, “bròg bho ìomhaigh diosc sùbailte”, “Iowa State”, “dràma”, “superalesh”, “einnsean smùid”, “rudan ri dhèanamh Disathairne”, “tha agam madadh-ruadh ann an grinder feòla", "a thionndaidh e a-mach mar a bha e an-còmhnaidh", "cha b' urrainn dhuinn tagaichean èibhinn a chruthachadh". Gus cuspair nan artaigilean sin a dhearbhadh, chan eil tagaichean gu leòr - feumaidh tu modaladh cuspaireil a dhèanamh air teacsaichean nan artaigilean.

Bidh mion-sgrùdadh nas mionaidiche air susbaint nan artaigilean anns an ath phost. An toiseach, tha mi a’ dol a thogail modail a tha a’ ro-innse na h-àireamh de sheallaidhean duilleag airson artaigil stèidhichte air an t-susbaint a th’ ann. San dàrna h-àite, tha mi airson an lìonra neural a theagasg gus teacsaichean a ghineadh san aon stoidhle ri ùghdaran Habr. Mar sin fo-sgrìobh 🙂

PS Agus seo am beeped stòr-dàta.

Source: www.habr.com

Cuir beachd ann