Kumaha kuring parsed Habr, bagian 1: tren

Nalika Olivier Taun Anyar urang réngsé, kuring teu boga hal anu ngalakukeun, sarta kuring mutuskeun pikeun ngundeur sakabeh artikel ti Habrahabr (jeung platform patali) kana komputer tur ngajalajah.

Aya sababaraha carita metot. Anu kahiji nyaéta ngembangkeun format sareng topik tulisan salami 12 taun ayana situs. Contona, dinamika sababaraha jejer cukup indicative. Teras - handapeun cut.

Kumaha kuring parsed Habr, bagian 1: tren

Prosés parsing

Ngartos kumaha Habr dimekarkeun, perlu ngaliwat sagala artikel na nimba meta-informasi ti aranjeunna (contona, kaping). Jalan pintas éta gampang, sabab tautan ka sadaya tulisan sapertos "habrahabr.ru/post/337722/", sareng nomerna dirumuskeun sacara ketat. Nyaho yén pos panungtungan boga angka rada kirang ti 350 sarébu, abdi nembé ngaliwat sagala id dokumén mungkin dina loop a (kode Python):

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

fungsi download_document nyoba muka kaca jeung id pakait jeung nyoba nimba informasi bermakna tina struktur 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)

Dina prosés parsing, kuring manggihan sababaraha hal anyar.

Anu mimiti, aranjeunna nyarios yén nyiptakeun langkung seueur prosés tibatan aya inti dina prosésor henteu aya gunana. Tapi dina hal kuring, tétéla yén sumber daya anu ngawatesan sanés prosésor, tapi jaringan, sareng 100 prosés langkung gancang tibatan 4 atanapi, sebutkeun, 20.

Bréh, dina sababaraha tulisan aya kombinasi karakter husus - contona, euphemisms kawas "% & # @". Tétéla éta html.parser, nu kuring dipaké munggaran, meta pikeun kombinasi &# painfully, tempo awal éntitas html. Kuring geus bade ngalakukeun black magic, tapi forum ngusulkeun yén anjeun ngan bisa ngarobah parser nu.

Katilu, abdi tiasa ngabongkar sadaya publikasi, kecuali tilu. Dokumén nomer 65927, 162075, sareng 275987 langsung dihapus ku antivirus kuring. Ieu mangrupikeun tulisan masing-masing ngeunaan ranté JavaScript anu ngaunduh pdf jahat, SMS ransomware dina bentuk sakumpulan plugins browser, sareng situs CrashSafari.com anu ngirim iPhones kana reboot. Antipirus manggihan artikel séjén engké, salila scan sistem: pos 338586 ngeunaan naskah dina ramatloka toko piaraan anu ngagunakeun prosésor pamaké pikeun tambang cryptocurrency. Ku kituna urang tiasa nganggap karya antipirus anu cukup nyukupan.

Artikel "Live" tétéla ngan satengah tina maksimum poténsial - 166307 lembar. Ngeunaan sésana, Habr méré pilihan "halaman geus luntur, geus dihapus atawa teu aya pisan." Muhun, nanaon bisa lumangsung.

Unggahan artikel dituturkeun ku karya téknis: contona, tanggal publikasi kedah dirobih tina format "'21 Désémber 2006 jam 10:47" kana standar. datetime, sarta "12,8k" pintonan - dina 12800. Dina tahap ieu, sababaraha kajadian deui kaluar. Anu paling lucu aya hubunganana sareng jumlah sora sareng jinis data: sababaraha tulisan lami ngagaduhan int ngabahekeun sareng nampi masing-masing 65535 undian.

Kumaha kuring parsed Habr, bagian 1: tren

Hasilna, téks artikel (tanpa gambar) nyandak kuring 1.5 gigabyte, koméntar meta-informasi - sejen 3, sarta ngeunaan saratus megabytes - meta-informasi ngeunaan artikel. Ieu bisa sagemblengna diteundeun dina RAM, nu éta kejutan pikaresepeun pikeun kuring.

Kuring ngamimitian analisa artikel sanés tina téks sorangan, tapi tina inpormasi meta: kaping, tag, hub, pandangan sareng anu dipikaresep. Tétéla manéhna bisa ngabejaan loba.

Tren Pangwangunan Habrahabr

Artikel dina loka geus diterbitkeun saprak 2006; paling intensif - dina 2008-2016.

Kumaha kuring parsed Habr, bagian 1: tren

Kumaha aktipna tulisan ieu dibaca dina waktos anu béda henteu gampang pikeun ditaksir. Teks ti 2012 sareng langkung ngora nampi langkung seueur koméntar sareng rating, tapi téks anu langkung énggal gaduh langkung seueur pandangan sareng téténggér. Métrik ieu kalakuanana sami (dibagi dua) ngan sakali, dina taun 2015. Panginten, dina kaayaan krisis ékonomi sareng politik, perhatian pamiarsa parantos ngalih tina blog IT kana masalah anu langkung nyeri.

Kumaha kuring parsed Habr, bagian 1: tren

Salian artikel sorangan, kuring diundeur leuwih komentar ka aranjeunna. Aya 6 juta koméntar, tapi 240 rébu di antarana dilarang ("UFO ngalayang sareng nyebarkeun prasasti ieu di dieu"). Hiji sipat mangpaat tina komentar nyaeta aranjeunna gaduh cap waktu. Ku diajar waktos koméntar, anjeun kasarna tiasa ngartos nalika artikel dibaca pisan.

Tétéla lolobana artikel duanana ditulis tur commented wae ti 10 am nepi ka 20 pm, i.e. dina dinten kerja khas Moscow. Ieu tiasa hartosna yén Habr dibaca pikeun tujuan profésional, sareng yén ieu mangrupikeun cara anu saé pikeun ngalambatkeun padamelan. Ku jalan kitu, sebaran waktu poé ieu stabil ti pisan pondasi Habr nepi ka kiwari.

Kumaha kuring parsed Habr, bagian 1: tren

Sanajan kitu, mangpaat utama a comment timestamp sanes waktos poe, tapi lilana "hirup aktif" artikel. Kuring ngitung sabaraha waktos disebarkeun ti publikasi artikel ka komentar na. Tétéla ayeuna komentar median (garis héjo) datang dina ngeunaan 20 jam, i.e. dina dinten kahiji saatos publikasi, rata-rata, sakedik langkung ti satengah sadaya koméntar dina tulisan éta tinggaleun. Sareng dina dua dinten aranjeunna ngantunkeun 75% sadaya koméntar. Dina waktos anu sami, tulisan sateuacana dibaca langkung gancang - contona, dina 2010, satengah tina koméntar sumping dina 6 jam munggaran.

Kumaha kuring parsed Habr, bagian 1: tren

Ieu sumping salaku reuwas ka kuring yén komentar geus manjangkeun: jumlah rata-rata karakter dina komentar geus ampir dua kali leuwih hirupna Habr!

Kumaha kuring parsed Habr, bagian 1: tren

Eupan balik anu langkung gampang tibatan koméntar nyaéta sora. Beda sareng seueur sumber sanésna, dina Habré anjeun tiasa nempatkeun henteu ngan ukur katambah, tapi ogé kakurangan. Nanging, pamiarsa henteu sering ngagunakeun kasempetan anu terakhir: pangsa anu henteu resep ayeuna sakitar 15% tina sadaya undian. Baheula aya deui, tapi kana waktosna, pamiarsa janten langkung ramah.

Kumaha kuring parsed Habr, bagian 1: tren

Naskah sorangan geus robah kana waktu. Contona, panjang has téks teu eureun tumuwuh steadily ti pisan peluncuran loka, sanajan crises. Dina dasawarsa, naskah parantos janten ampir sapuluh kali langkung lami!

Kumaha kuring parsed Habr, bagian 1: tren

Gaya téks (ka perkiraan munggaran) ogé robih. Dina taun-taun mimiti ayana Habr, contona, pangsa kode sareng nomer dina téks ningkat:

Kumaha kuring parsed Habr, bagian 1: tren

Saatos ngartos dinamika sakabéh situs, abdi mutuskeun pikeun ngukur kumaha popularitas rupa jejer robah. Jejer bisa otomatis dipilih tina téks, tapi pikeun starters, anjeun teu bisa reinvent kabayang, tapi make tag siap-dijieun affixed ku pangarang unggal artikel. Kuring geus digambar opat tren has dina bagan. The "Google" tema mimitina didominasi (sugan utamana alatan SEO), tapi geus kaleungitan beurat leuwih taun. Javascript parantos janten topik anu populer sareng terus tumbuh lalaunan, tapi pembelajaran mesin parantos mimiti gancang popularitasna ngan ukur dina taun-taun ayeuna. Linux, di sisi anu sanés, tetep sami relevan sapanjang dasawarsa.

Kumaha kuring parsed Habr, bagian 1: tren

Tangtosna, kuring janten kabetot dina topik naon anu narik langkung seueur kagiatan maca. Kuring ngitung jumlah median tina pintonan, sora jeung komentar dina unggal topik. Ieu kajadian:

  • Topik anu paling ditingali: arduino, desain wéb, pamekaran wéb, nyerna, tautan, css, html, html5, nginx, algoritma.
  • Topik anu paling "resep": vkontakte, humor, jquery, opera, c, html, pamekaran wéb, HTML5, css, desain wéb.
  • Topik anu paling dibahas: opera, skype, freelance, vkontakte, ubuntu, karya, nokia, nginx, arduino, firefox.

Ku jalan kitu, saprak kuring ngabandingkeun topik, anjeun tiasa pangkat ku frékuénsi (sareng ngabandingkeun hasilna sareng artikel sarupa ti 2013).

  • Sapanjang taun ayana Habr, tag anu pang populerna (dina urutan turun) nyaéta google, android, javascript, microsoft, linux, php, apple, java, python, programming, startups, development, ios, startup, social networks.
  • Dina 2017, anu pang populerna nyaéta javascript, python, java, android, development, linux, c++, programming, php, c#, ios, machine learning, information security, microsoft, react

Lamun ngabandingkeun ratings ieu, hiji bisa nengetan, contona, dina Maret victorious of Python jeung punah php, atawa ka "panonpoé Tilelep" jejer ngamimitian jeung kebangkitan mesin learning.

Henteu sadayana tag dina Habré gaduh warna tematik anu atra. Contona, di dieu aya belasan tag nu patepung ngan sakali, tapi ngan seemed lucu keur kuring. Janten: "gagasan mangrupikeun kakuatan nyetir kamajuan", "boot tina gambar ngagantung", "Iowa State", "drama", "superalesh", "mesin uap", "hal anu kedah dilakukeun dina dinten Saptu", "Kuring ngagaduhan rubah dina coét daging", "a tétéla sakumaha salawasna", "urang teu bisa datang nepi ka tag lucu". Pikeun nangtoskeun topik artikel sapertos kitu, tag henteu cekap - anjeun kedah ngalaksanakeun modél tematik dina téks tulisan.

Analisis anu langkung rinci ngeunaan eusi tulisan bakal aya dina tulisan salajengna. Kahiji, abdi bade ngawangun model nu ngaramal jumlah kaca view pikeun artikel dumasar kana eusina. Kadua, kuring hoyong ngajar jaringan saraf pikeun ngahasilkeun téks dina gaya anu sami sareng pangarang Habr. Jadi langganan 🙂

PS Sareng di dieu aya bip susunan data.

sumber: www.habr.com

Tambahkeun komentar