මම Habr විග්‍රහ කළ ආකාරය, 1 කොටස: ප්‍රවණතා

අලුත් අවුරුදු ඔලිවියර් අවසන් වූ විට, මට කිරීමට කිසිවක් නොතිබූ අතර, මම Habrahabr (සහ අදාළ වේදිකා) වෙතින් සියලුම ලිපි මගේ පරිගණකයට බාගත කර ගවේෂණය කිරීමට තීරණය කළෙමි.

රසවත් කතා කිහිපයක් තිබුණා. ඒවායින් පළමුවැන්න නම් වෙබ් අඩවියේ පැවැත්මේ වසර 12 තුළ ලිපිවල ආකෘතිය සහ මාතෘකා සංවර්ධනය කිරීමයි. උදාහරණයක් ලෙස, සමහර මාතෘකා වල ගතිකත්වය බෙහෙවින් ඇඟවුම් කරයි. අඛණ්ඩව - කප්පාදුව යටතේ.

මම Habr විග්‍රහ කළ ආකාරය, 1 කොටස: ප්‍රවණතා

විග්‍රහ කිරීමේ ක්‍රියාවලිය

හබ්ර් වර්ධනය වූ ආකාරය තේරුම් ගැනීමට, ඔහුගේ සියලුම ලිපි හරහා ගොස් ඒවායින් මෙටා තොරතුරු උපුටා ගැනීම අවශ්‍ය විය (උදාහරණයක් ලෙස, දිනයන්). සියලුම ලිපි වලට සබැඳි "habrahabr.ru/post/337722/" ලෙස පෙනෙන නිසාත්, අංක දැඩි ලෙස අනුපිළිවෙලින් ලබා දී ඇති නිසාත් මඟ හැරීම පහසු විය. පසුගිය පෝස්ටුවට 350 ට වඩා මඳක් අඩු අංකයක් ඇති බව දැන, මම හැකි සියලුම ලේඛන හැඳුනුම්පත ලූපයකින් (පයිතන් කේතය) ගියෙමි:

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

උත්සවය download_document අනුරූප id සමඟ පිටුව පූරණය කිරීමට උත්සාහ කරන අතර 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)

විග්‍රහ කිරීමේ ක්‍රියාවලියේදී මම අලුත් දේවල් කිහිපයක් සොයාගත්තා.

මුලින්ම ඔවුන් පවසන්නේ ප්‍රොසෙසරයේ ඇති cores වලට වඩා ක්‍රියාවලි නිර්මාණය කිරීමෙන් පලක් නැති බවයි. නමුත් මගේ නඩුවේදී, සීමිත සම්පත ප්‍රොසෙසරය නොව ජාලය බව පෙනී ගිය අතර, ක්‍රියාවලි 100 ක් 4 හෝ 20 ට වඩා වේගයෙන් ක්‍රියාත්මක වේ.

දෙවනුව, සමහර පෝස්ට් වල විශේෂ අක්ෂර සංයෝජන තිබුනා - උදාහරණයක් ලෙස, "%&#@" වැනි සුහද වචන. බව පෙනී ගියේය html.parser, මම මුලින්ම භාවිතා කළ, සංයෝජනයට ප්රතික්රියා කරයි &# වේදනාකාරී ලෙස, එය html ආයතනයේ ආරම්භය ලෙස සලකයි. මම දැනටමත් කළු මැජික් කරන්න යනවා, නමුත් සංසදය යෝජනා කළේ ඔබට විග්‍රහය වෙනස් කළ හැකි බවයි.

තෙවනුව, ප්‍රකාශන තුනක් හැර අනෙකුත් සියලුම ප්‍රකාශන ගොඩබෑමට මට හැකි විය. 65927, 162075, සහ 275987 අංක සහිත ලේඛන මගේ ප්‍රති-වයිරසය මඟින් ක්ෂණිකව මකා දමන ලදී. මේවා පිළිවෙලින්, අනිෂ්ට pdf බාගත කරන ජාවාස්ක්‍රිප්ට් දාමයක්, බ්‍රව්සර් ප්ලගීන කට්ටලයක ස්වරූපයෙන් SMS ransomware සහ iPhone නැවත පණගැන්වීමකට යවන CrashSafari.com වෙබ් අඩවිය පිළිබඳ ලිපි වේ. ප්‍රති-වයිරස පසුව, පද්ධති පරිලෝකනයකදී තවත් ලිපියක් සොයා ගන්නා ලදී: Cryptocurrency පතල් කිරීමට පරිශීලකයාගේ ප්‍රොසෙසරය භාවිතා කරන සුරතල් ගබඩා වෙබ් අඩවියේ ස්ක්‍රිප්ට් ගැන 338586 පළ කරන්න. එබැවින් ප්රතිවෛරසයේ කාර්යය සෑහෙන තරම් ප්රමාණවත් බව අපට සැලකිය හැකිය.

"සජීවී" ලිපි විභව උපරිමයෙන් අඩක් පමණක් බවට පත් විය - කෑලි 166307. ඉතිරිය ගැන, Habr විකල්ප ලබා දෙයි "පිටුව යල් පැන ගොස් ඇත, මකා ඇත හෝ කිසිසේත් නොපවතී." හොඳයි, ඕනෑම දෙයක් සිදු විය හැක.

ලිපි උඩුගත කිරීමෙන් පසුව තාක්ෂණික කටයුතු සිදු විය: නිදසුනක් ලෙස, ප්‍රකාශන දින "'21 දෙසැම්බර් 2006 පෙ.ව. 10:47" ආකෘතියෙන් සම්මතයට පරිවර්තනය කළ යුතු විය. datetime, සහ "12,8k" බැලීම් - 12800 දී. මෙම අවස්ථාවෙහිදී, තවත් සිදුවීම් කිහිපයක් එළියට ආවේය. විනෝදජනකම එක ඡන්ද ගණන් කිරීම් සහ දත්ත වර්ග සමඟ කළ යුතු ය: සමහර පැරණි පළ කිරීම්වලට ඉන්ට් පිටාර ගැලීමක් තිබූ අතර ඡන්ද 65535 බැගින් ලැබිණි.

මම Habr විග්‍රහ කළ ආකාරය, 1 කොටස: ප්‍රවණතා

ප්රතිඵලයක් වශයෙන්, ලිපි පෙළ (පින්තූර නොමැතිව) මට ගිගාබයිට් 1.5 ක්, මෙටා-තොරතුරු සහිත අදහස් - තවත් 3 ක් සහ මෙගාබයිට් සියයක් පමණ - ලිපි පිළිබඳ මෙටා-තොරතුරු ලබා ගත්තේය. මෙය සම්පූර්ණයෙන්ම RAM හි තබා ගත හැකිය, එය මට ප්රසන්න පුදුමයක් විය.

මම ලිපි විශ්ලේෂණය ආරම්භ කළේ පෙළ වලින් නොව මෙටා තොරතුරු වලින්: දිනයන්, ටැග්, හබ්, දර්ශන සහ කැමති. ඇයට බොහෝ දේ පැවසිය හැකි බව පෙනී ගියේය.

Habrahabr සංවර්ධන ප්රවණතා

වෙබ් අඩවියේ ලිපි 2006 සිට ප්රකාශයට පත් කර ඇත; වඩාත් දැඩි ලෙස - 2008-2016 දී.

මම Habr විග්‍රහ කළ ආකාරය, 1 කොටස: ප්‍රවණතා

විවිධ කාලවලදී මෙම ලිපි කෙතරම් සක්‍රීයව කියවා ඇත්දැයි තක්සේරු කිරීම එතරම් පහසු නැත. 2012 සහ ඊට අඩු පාඨවලට වැඩි අදහස් සහ ශ්‍රේණිගත කිරීම් ලැබී ඇත, නමුත් නව පාඨවලට වැඩි බැලීම් සහ පිටුසන් ඇත. මෙම ප්‍රමිතික 2015 දී එකම ආකාරයකින් (අඩක් අඩු කර) හැසිරුණේ එක් වරක් පමණි. සමහර විට, ආර්ථික හා දේශපාලන අර්බුදකාරී තත්වයක් තුළ, පාඨකයන්ගේ අවධානය තොරතුරු තාක්ෂණ බ්ලොග් වලින් වඩාත් වේදනාකාරී ගැටළු වෙත මාරු වී ඇත.

මම Habr විග්‍රහ කළ ආකාරය, 1 කොටස: ප්‍රවණතා

ලිපි වලට අමතරව, මම ඒවාට තවත් අදහස් බාගත කළෙමි. අදහස් මිලියන 6 ක් තිබුණි, කෙසේ වෙතත්, ඒවායින් 240 ක් තහනම් කරන ලදී ("UFO එකක් පියාසර කර මෙම සෙල්ලිපිය මෙහි ප්‍රකාශයට පත් කළේය"). අදහස් දැක්වීම්වල ප්‍රයෝජනවත් ගුණාංගයක් නම් ඒවායේ කාල මුද්දරයක් තිබීමයි. අදහස් දැක්වීමේ වේලාව අධ්‍යයනය කිරීමෙන්, ලිපි කිසිසේත් කියවන විට ඔබට දළ වශයෙන් තේරුම් ගත හැකිය.

බොහෝ ලිපි උදේ 10 සිට රාත්‍රී 20 දක්වා කොතැනක හෝ ලියා ඇති බව සහ අදහස් දක්වා ඇති බව පෙනී ගියේය, එනම්. සාමාන්ය මොස්කව් වැඩ කරන දිනයක. මෙයින් අදහස් කරන්නේ Habr වෘත්තීය අරමුණු සඳහා කියවන බවත්, රැකියාව කල් දැමීමට මෙය හොඳ ක්‍රමයක් බවත්ය. මාර්ගය වන විට, දවසේ වේලාවේ මෙම බෙදා හැරීම හබ්ර්හි පදනමේ සිට අද දක්වා ස්ථාවර වේ.

මම Habr විග්‍රහ කළ ආකාරය, 1 කොටස: ප්‍රවණතා

කෙසේ වෙතත්, විවරණ කාල මුද්‍රාවක ප්‍රධාන වාසිය වන්නේ දවසේ වේලාව නොව, ලිපියේ "ක්‍රියාකාරී ජීවිතය" කාලසීමාවයි. ලිපිය ප්‍රකාශනයේ සිට එහි අදහස දක්වා කාලය බෙදා හරින ආකාරය මම ගණනය කළෙමි. දැන් මධ්‍යස්ථ විවරණය (හරිත රේඛාව) පැය 20 කින් පමණ පැමිණෙන බව පෙනී ගියේය, i.e. ප්‍රකාශනයෙන් පසු පළමු දිනයේ, සාමාන්‍යයෙන්, ලිපියේ සියලුම අදහස් වලින් අඩකට වඩා ටිකක් ඉතිරි වේ. දින දෙකකින් ඔවුන් සියලු අදහස් වලින් 75% ක් තබයි. ඒ අතරම, කලින් ලිපි ඊටත් වඩා වේගයෙන් කියවා ඇත - උදාහරණයක් ලෙස, 2010 දී, පළමු පැය 6 තුළ අදහස් වලින් අඩක් පැමිණියේය.

මම Habr විග්‍රහ කළ ආකාරය, 1 කොටස: ප්‍රවණතා

අදහස් දැක්වීම් දිගු වීම මට පුදුමයක් විය: හබ්ර්ගේ ජීවිත කාලය තුළ අදහස් දැක්වීමක සාමාන්‍ය අක්ෂර සංඛ්‍යාව දෙගුණයක් වී ඇත!

මම Habr විග්‍රහ කළ ආකාරය, 1 කොටස: ප්‍රවණතා

අදහස් වලට වඩා පහසු ප්‍රතිපෝෂණය ඡන්ද වේ. වෙනත් බොහෝ සම්පත් මෙන් නොව, Habré මත ඔබට ප්ලස් පමණක් නොව, අවාසි ද තැබිය හැකිය. කෙසේ වෙතත්, පාඨකයින් අවසාන අවස්ථාව බොහෝ විට භාවිතා නොකරයි: වත්මන් අකමැත්තන්ගේ කොටස ප්‍රකාශිත සියලුම ඡන්ද වලින් 15% ක් පමණ වේ. ඉස්සර තවත් තිබුනා නමුත් කාලයත් සමඟ පාඨකයින් කරුණාවන්ත වී ඇත.

මම Habr විග්‍රහ කළ ආකාරය, 1 කොටස: ප්‍රවණතා

කාලයත් සමඟ පෙළ වෙනස් වී ඇත. උදාහරණයක් ලෙස, අර්බුද නොතකා, වෙබ් අඩවිය දියත් කිරීමේ සිටම පෙළෙහි සාමාන්‍ය දිග ක්‍රමයෙන් වර්ධනය වීම නතර නොවේ. දශකයක් තුළ, පාඨ දස ගුණයකින් පමණ දිගු වී ඇත!

මම Habr විග්‍රහ කළ ආකාරය, 1 කොටස: ප්‍රවණතා

පාඨවල විලාසය (පළමු ආසන්න වශයෙන්) ද වෙනස් විය. හබ්ර්ගේ පැවැත්මේ පළමු වසර තුළ, උදාහරණයක් ලෙස, පාඨවල කේත සහ අංකවල කොටස වැඩි විය:

මම Habr විග්‍රහ කළ ආකාරය, 1 කොටස: ප්‍රවණතා

වෙබ් අඩවියේ සමස්ත ගතිකත්වය අවබෝධ කර ගැනීමෙන් පසු, විවිධ මාතෘකා වල ජනප්රියත්වය වෙනස් වූ ආකාරය මැන බැලීමට මම තීරණය කළෙමි. පාඨ වලින් මාතෘකා ස්වයංක්‍රීයව තෝරා ගත හැක, නමුත් ආරම්භකයින් සඳහා, ඔබට රෝදය ප්‍රතිනිර්මාණය කළ නොහැක, නමුත් එක් එක් ලිපියේ කතුවරුන් විසින් අලවා ඇති සූදානම් කළ ටැග් භාවිතා කරන්න. මම ප්‍රස්ථාරයේ සාමාන්‍ය ප්‍රවණතා හතරක් ඇඳ ඇත. "Google" තේමාව මුලදී ආධිපත්‍යය දැරූ අතර (සමහර විට ප්‍රධාන වශයෙන් SEO නිසා), නමුත් වසර ගණනාවක් තිස්සේ බර අඩු වෙමින් පවතී. ජාවාස්ක්‍රිප්ට් ජනප්‍රිය මාතෘකාවක් වන අතර එය දිගටම සෙමින් වර්ධනය වේ, නමුත් යන්ත්‍ර ඉගෙනීම වේගයෙන් ජනප්‍රිය වීමට පටන් ගෙන ඇත්තේ මෑත වසරවලදී පමණි. අනෙක් අතට Linux දශකය පුරාවටම සමානව අදාළව පවතී.

මම Habr විග්‍රහ කළ ආකාරය, 1 කොටස: ප්‍රවණතා

ඇත්ත වශයෙන්ම, වැඩි පාඨක ක්රියාකාරකම් ආකර්ෂණය කර ගන්නා මාතෘකා ගැන මම උනන්දු විය. මම එක් එක් මාතෘකාව තුළ බැලීම්, ඡන්ද සහ අදහස් මධ්‍යස්ථ සංඛ්‍යාව ගණනය කළෙමි. සිදු වූ දේ මෙන්න:

  • වැඩිපුරම නරඹන මාතෘකා: arduino, web design, web development, digest, links, css, html, html5, nginx, algorithms.
  • වඩාත්ම "කැමති" මාතෘකා: vkontakte, humor, jquery, opera, c, html, web development, html5, css, web design.
  • වැඩිපුරම සාකච්ඡා කරන මාතෘකා: opera, skype, freelance, vkontakte, ubuntu, work, nokia, nginx, arduino, firefox.

මාර්ගය වන විට, මම මාතෘකා සංසන්දනය කරන බැවින්, ඔබට ඒවා සංඛ්‍යාතය අනුව ශ්‍රේණිගත කළ හැකිය (සහ ප්‍රතිඵල සමඟ සංසන්දනය කරන්න 2013 සිට සමාන ලිපියක්).

  • Habr ගේ පැවැත්මේ සියලු වසර සඳහා, වඩාත්ම ජනප්‍රිය ටැග් (බැසීමේ අනුපිළිවෙලින්) වන්නේ google, android, javascript, microsoft, linux, php, apple, java, python, programming, startups, development, ios, startup, social networks
  • 2017 දී වඩාත් ජනප්‍රිය වූයේ javascript, python, java, android, Development, linux, c++, programming, php, c#, ios, machine learning, information security, microsoft, react

මෙම ශ්‍රේණිගත කිරීම් සංසන්දනය කිරීමේදී, කෙනෙකුට අවධානය යොමු කළ හැකිය, උදාහරණයක් ලෙස, Python හි ජයග්‍රාහී ගමන සහ php වඳ වී යාම, හෝ ආරම්භක මාතෘකා වල "හිරු බැසයාම" සහ යන්ත්‍ර ඉගෙනීමේ නැගීම වෙත.

Habré හි ඇති සියලුම ටැග් වලට එතරම් පැහැදිලි තේමාත්මක වර්ණ ගැන්වීමක් නොමැත. උදාහරණයක් ලෙස, මෙන්න එක් වරක් පමණක් හමු වූ ටැග් දුසිමක්, නමුත් මට විහිළුවක් ලෙස පෙනුනි. ඉතින්: "අදහස ප්‍රගතියේ ගාමක බලවේගයයි", "නම්‍ය රූපයකින් ආරම්භ කරන්න", "අයෝවා ප්‍රාන්තය", "නාට්‍ය", "සුපර්ලේෂ්", "වාෂ්ප එන්ජිම", "සෙනසුරාදා කළ යුතු දේවල්", "මට තිබේ මස් ඇඹරුම් යන්තයක හිවලෙක්", "එය සෑම විටම මෙන් විය", "අපට විහිලු ටැග් ඉදිරිපත් කිරීමට නොහැකි විය". එවැනි ලිපිවල විෂය තීරණය කිරීම සඳහා, ටැග් ප්රමාණවත් නොවේ - ඔබට ලිපි පෙළ මත තේමාත්මක ආකෘති නිර්මාණය කිරීමට සිදු වනු ඇත.

ලිපිවල අන්තර්ගතය පිළිබඳ වඩාත් සවිස්තරාත්මක විග්‍රහයක් ඊළඟ ලිපියෙන්. පළමුව, මම ලිපියක් එහි අන්තර්ගතය මත පදනම්ව පිටු බැලීම් ගණන පුරෝකථනය කරන ආකෘතියක් ගොඩනඟන්නෙමි. දෙවනුව, හබ්ර් හි කතුවරුන් මෙන් එකම ශෛලියකින් පෙළ උත්පාදනය කිරීමට ස්නායුක ජාලයට ඉගැන්වීමට මට අවශ්‍යය. එහෙනම් subscribe කරන්න 🙂

PS සහ මෙන්න බීප් එක දත්ත කට්ටලය.

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න