ืืฉืืกืชืืืื ืืืืืืืื ืฉื ืืฉื ื ืืืืฉื, ืื ืืื ืื ืื ืืขืฉืืช, ืืืืืืชื ืืืืจืื ืืช ืื ืืืืืจืื ืืืืจืืืจ (ืืคืืืคืืจืืืช ืงืฉืืจืืช) ืืืืฉื ืืืืงืืจ.
ืืื ืืื ืกืืคืืจืื ืืขื ืืื ืื. ืืจืืฉืื ืฉืืื ืืื ืคืืชืื ืืคืืจืื ืื ืืฉืื ืืืืืจืื ืืืืจื 12 ืฉื ืืช ืงืืืื ืฉื ืืืชืจ. ืืืืืื, ืืืื ืืืงื ืฉื ืืื ื ืืฉืืื ืืขืืื ืืืื. ืืืฉื - ืืชืืช ืืืืจื.
ืชืืืื ื ืืชืื
ืืื ืืืืื ืืื ืืืจ ืืชืคืชื, ืืื ืฆืืจื ืืขืืืจ ืขื ืื ืืืืืจืื ืฉืื ืืืืืฅ ืืื ืืื-ืืื ืคืืจืืฆืื (ืืืฉื ืชืืจืืืื). ืืขืงืืคื ืืืืชื ืงืื, ืืืืืื ืฉืืงืืฉืืจืื ืืื ืืืืืจืื ื ืจืืื ืืื "habrahabr.ru/post/337722/", ืืืืกืคืจืื ื ืืชื ืื ืืคื ืืกืืจ. ืืืืืขื ืฉืืคืืกื ืืืืจืื ืืฉ ืืกืคืจ ืงืฆืช ืคืืืช ื-350 ืืืฃ, ืคืฉืื ืขืืจืชื ืืช ืื ืืืื ืืืกืืืื ืืืคืฉืจืืื ืืืืืื (ืงืื Python):
import numpy as np
from multiprocessing import Pool
with Pool(100) as p:
docs = p.map(download_document, np.arange(350000))
ืคืื ืงืฆืื download_document
ืื ืกื ืืืขืื ืืช ืืืฃ ืขื ืืืืื ืืืชืืื ืืื ืกื ืืืืฅ ืืืืข ืืฉืืขืืชื ืืืื ื ื-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)
ืืชืืืื ืื ืืชืื, ืืืืืชื ืืื ืืืจืื ืืืฉืื.
ืจืืฉืืช, ืื ืืืืจืื ืฉืืฆืืจืช ืืืชืจ ืชืืืืืื ืืื ืฉืืฉ ืืืืืช ืืืขืื ืืื ืืกืจืช ืชืืขืืช. ืืื ืืืงืจื ืฉืื, ืืชืืจืจ ืฉืืืฉืื ืืืืืื ืืื ืื ืืืขืื, ืืื ืืจืฉืช, ื-100 ืชืืืืืื ืขืืืืื ืืืจ ืืืชืจ ื-4 ืื, ื ืืื, 20.
ืฉื ืืช, ืืืืง ืืืคืืกืืื ืืื ืฉืืืืืื ืฉื ืชืืืื ืืืืืืื - ืืืฉื, ืืฉืื ืืจืข ืืื "%&#@". ืืชืืจืจ ืฉืื html.parser
, ืฉืืฉืชืืฉืชื ืื ืชืืืื, ืืืื ืืฉืืืื &#
ืืืืคื ืืืื, ืืืชืืฉื ืืื ืฉืืืชืืื ืฉื ืืฉืืช ื-html. ืืืจ ืืชืืืื ืชื ืืขืฉืืช ืงืกื ืฉืืืจ, ืืื ืืคืืจืื ืืฆืืข ืฉืืชื ืืืื ืคืฉืื ืืฉื ืืช ืืช ืืื ืชื.
ืฉืืืฉืืช, ืืฆืืืชื ืืคืจืืง ืืช ืื ืืคืจืกืืืื, ืืืื ืฉืืืฉื. ืืกืืืื ืฉืืกืคืจื 65927, 162075 ื-275987 ื ืืืงื ืืืืืืช ืขื ืืื ืืื ืื ืืืจืืก ืฉืื. ืืืืืจ ืืืชืืืช, ืืืชืืื, ืขื ืฉืจืฉืจืช javascript ืฉืืืจืืื PDF ืืืื ื, ืชืืื ืืช ืืืคืจ ื-SMS ืืฆืืจื ืฉื ืกื ืชืืกืคืื ืืืคืืคื, ืืืชืจ CrashSafari.com ืฉืฉืืื ืืืฉืืจื ืืืืคืื ืืืชืืื ืืืืฉ. ืื ืื ืืืจืืก ืืืื ืืืืจ ื ืืกืฃ ืืืืืจ ืืืชืจ, ืืืืื ืกืจืืงืช ืืขืจืืช: ืคืืกื 338586 ืขื ืกืงืจืืคืืื ืืืชืจ ืื ืืช ืืืืืช ืืืฉืชืืฉืื ืืืขืื ืฉื ืืืฉืชืืฉ ืืื ืืืจืืช ืืืืขืืช ืงืจืืคืืืืจืคืืื. ืื ืื ืื ื ืืืืืื ืืฉืงืื ืืช ืืขืืืื ืฉื ืืื ืื ืืืจืืก ืืื ืื ืืกืคืงืช.
ืืชืืืช "ืืืืช" ืืชืืจืจื ืืืืฆืืช ืืืืงืกืืืื ืืคืืื ืฆืืืื - 166307 ืืืงืื. ืืืื ืืฉืืจ, ืืืจ ื ืืชื ืืคืฉืจืืืืช "ืืืฃ ืืืืฉื, ื ืืืง ืื ืื ืืื ืงืืื ืืืื". ืืืื, ืืื ืืืื ืืงืจืืช.
ืืขืืืช ืืืืืจืื ืืจืจื ืขืืืื ืืื ืืช: ืืืฉื, ืืื ืฆืืจื ืืืืืจ ืืช ืชืืจืืื ืืคืจืกืื ืืืคืืจืื "21 ืืืฆืืืจ 2006 ืืฉืขื 10:47 ืืืืงืจ" ืืชืงื datetime
, ื-"12,8k" ืฆืคืืืช - ืืฉื ืช 12800. ืืฉืื ืื ืืฆืื ืขืื ืืื ืชืงืจืืืช. ืืื ืืฆืืืง ืฉืืฉ ืืขืฉืืช ืขื ืกืคืืจืช ืืงืืืืช ืืกืืื ืื ืชืื ืื: ืืืื ืคืืกืืื ืืฉื ืื ืืืืชื ืืฆืคื ืืื ืื ืกืืืืช ืืงืืืื 65535 ืงืืืืช ืื ืืื.
ืืชืืฆืื ืืื, ืืืงืกืืื ืฉื ืืืืจืื (ืืื ืชืืื ืืช) ืืงืื ืื 1.5 ืืืื-ืืืื, ืืขืจืืช ืขื ืืื-ืืื ืคืืจืืฆืื - ืขืื 3, ืืืืื ืืื-ืืืื - ืืื-ืืืืข ืขื ืืืืจืื. ืื ืืืื ืืืืฉืืจ ืืืืืืื ื-RAM, ืืื ืืื ืืคืชืขื ื ืขืืื ืขืืืจื.
ืืชืืืชื ืืช ืื ืืชืื ืฉื ืืืืจืื ืื ืืืืงืกืืื ืขืฆืื, ืืื ืืืื-ืืื ืคืืจืืฆืื: ืชืืจืืืื, ืชืืืืช, ืจืืืืช, ืฆืคืืืช ืืืืืงืื. ืืชืืจืจ ืฉืืื ืืืืื ืืกืคืจ ืืจืื.
ืืืืืช ืคืืชืื ืืืจืืืจ
ืืืืจืื ืืืชืจ ืืชืคืจืกืืื ืืฉื ืช 2006; ืืืืคื ืืืื ืื ืกืืื ืืืืชืจ - ืืฉื ืื 2008-2016.
ืื ืื ืื ืงื ืืืขืจืื ืืื ืืืืจืื ืืื ื ืงืจืื ืืืืคื ืคืขืื ืืืื ืื ืฉืื ืื. ืืงืกืืื ื-2012 ืืืื ืงืืืื ืืืชืจ ืืขืจืืช ืืืืจืืืื, ืื ืืืงืกืืื ืืืฉืื ืืืชืจ ืืฉ ืืืชืจ ืฆืคืืืช ืืกืืื ืืืช. ืืืืื ืืื ืืชื ืืื ืืืืชื ืฆืืจื (ืืฆืืื) ืจืง ืคืขื ืืืช, ื-2015. ืืืื, ืืืฆื ืฉื ืืฉืืจ ืืืืื ืืคืืืืื, ืชืฉืืืช ืืื ืฉื ืืงืืจืืื ืขืืจื ืืืืืื IT ืื ืืฉืืื ืืืืืื ืืืชืจ.
ืื ืืกืฃ ืืืืืจืื ืขืฆืื, ืืืจืืชื ืืืืื ืขืื ืชืืืืืช. ืืื 6 ืืืืืื ืชืืืืืช, ืขื ืืืช, 240 ืืืฃ ืืื ื ืืกืจื ("ืขื"ื ืขืฃ ืคื ืืื ืืคืจืกื ืืช ืืืชืืืช ืืื ืืื"). ืชืืื ื ืฉืืืืฉืืช ืฉื ืืขืจืืช ืืื ืฉืืฉ ืืื ืืืชืืช ืืื. ืขื ืืื ืืืืื ืืื ืืืขืจืืช, ืืชื ืืืื ืืืืื ืืขืจื ืืชื ืงืืจืืื ืืืืจืื ืืืื.
ืืชืืจืจ ืฉืจืื ืืืชืืืช ืื ื ืืชืืืช ืืื ืืืขืจืืช ืืืคืฉืื ืืื 10 ืืืืงืจ ื-20 ืืขืจื, ืืืืืจ. ืืืื ืขืืืื ืืืคืืกื ืืืืกืงืื. ืืืฉืืขืืช ืขืฉืืื ืืืืืช ืฉืืืจ ื ืงืจื ืืืืจืืช ืืงืฆืืขืืืช, ืืฉืื ืืจื ืืืื ืืืชืืืื ืืขืืืื. ืืื, ืืืืงื ืื ืฉื ืืฉืขื ืืืื ืืื ืืฆืืื ืืขืฆื ืืกืืื ืฉื ืืืจ ืืขื ืืืื.
ืขื ืืืช, ืืืชืจืื ืืขืืงืจื ืฉื ืืืชืืช ืืื ืฉื ืชืืืื ืืื ื ืืฉืขื ืืืื, ืืื ืืฉื "ืืืืื ืืคืขืืืื" ืฉื ืืืืืจ. ืืืฉืืชื ืืื ืืชืืืง ืืืื ืืคืจืกืื ืืืชืื ืืขื ืืืขืจืชื. ืืชืืจืจ ืฉืืขืช ืืืขืจื ืืืฆืืื ืืช (ืงื ืืจืืง) ืืืืขื ืืขืื ื-20 ืฉืขืืช, ืืืืืจ. ืืืื ืืจืืฉืื ืืืืจ ืืคืจืกืื ื ืืชืจื ืืืืืฆืข ืงืฆืช ืืืชืจ ืืืืฆืืช ืืืื ืืชืืืืืช ืืืชืื. ืืืชืื ืืืืืื ืื ืืฉืืืจืื 75% ืืื ืืชืืืืืช. ืืืงืืื, ืืืืจืื ืงืืืืื ื ืงืจืื ืืคืืื ืืืจ ืืืชืจ - ืืืืืื, ืืฉื ืช 2010, ืืืฆืืช ืืืชืืืืืช ืืืืขื ื-6 ืืฉืขืืช ืืจืืฉืื ืืช.
ืื ืืคืชืืข ืืืชื ืฉืืชืืืืืช ืืชืืจืื: ืืกืคืจ ืืชืืืื ืืืืืฆืข ืืืขืจื ืืืขื ืืืืคื ืืืืื ืืืื ืฉื ืืืจ!
ืืฉืื ืงื ืืืชืจ ืืืฉืจ ืืขืจืืช ืื ืืฆืืขืืช. ืฉืื ืืื ืืฉืืืื ืจืืื ืืืจืื, ืขื Habrรฉ ืืชื ืืืื ืืฉืื ืื ืจืง ืคืืืกืื, ืืื ืื ืืื ืืกืื. ืขื ืืืช, ืืงืืจืืื ืื ืื ืฆืืื ืืช ืืืืืื ืืช ืืืืจืื ื ืืขืชืื ืงืจืืืืช ืื ืื: ืื ืชื ืื ืืืื ืฉื ืืืกืืืืงืื ืืื ื-15% ืืืื ืืืฆืืขืืช. ืคืขื ืืื ืืืชืจ, ืืื ืขื ืืืื, ืืงืืจืืื ืืคืื ืืืืชืจ ื ืืืืื.
ืืืงืกืืื ืขืฆืื ืืฉืชื ื ืขื ืืืื. ืืืฉื, ืืืืจื ืืืืคืืื ื ืฉื ืืืงืกื ืื ืืคืกืืง ืืืืื ืืืชืืื ืืขืฆื ืืฉืงืช ืืืชืจ, ืืืจืืช ืืืฉืืจืื. ืืชืื ืขืฉืืจ, ืืงืกืืื ืืคืื ืืจืืืื ืืืขื ืคื ืขืฉืจื!
ืื ืกืื ืื ืืืงืกืืื (ืืงืืจืื ืจืืฉืื) ืืฉืชื ื. ืืืืื ืืฉื ืื ืืจืืฉืื ืืช ืืงืืืื ืฉื ืืืจ, ืืืฉื, ืืื ืืืงื ืฉื ืงืื ืืืกืคืจืื ืืืงืกืืื:
ืืืืจ ืฉืืื ืชื ืืช ืืืื ืืืงื ืืืืืืช ืฉื ืืืชืจ, ืืืืืชื ืืืืื ืืืฆื ืืฉืชื ืชื ืืคืืคืืืจืืืช ืฉื ื ืืฉืืื ืฉืื ืื. ื ืืชื ืืืืืจ ื ืืฉืืื ืืืืคื ืืืืืืื ืืชืื ืืงืกืืื, ืื ืืชืืจ ืืชืืื, ืื ื ืืชื ืืืืฆืื ืืช ืืืืื ืืืืฉ, ืืื ืืืฉืชืืฉ ืืชืืืืช ืืืื ืืช ืืืืืืงืืช ืขื ืืื ืืืืจื ืื ืืืืจ. ืฆืืืจืชื ืืจืืข ืืืืืช ืืืคืืกืืืช ืืืืื. ื ืืฉื ื"ืืืื" ืฉืื ืืชืืืื (ืืืื ืืขืืงืจ ืืฉื ืงืืืื ืืชืจืื), ืื ืืจื ืืืฉืงื ืขื ืืฉื ืื. Javascript ืืื ื ืืฉื ืคืืคืืืจื ืืืืฉืื ืืฆืืื ืืื, ืื ืืืืืช ืืืื ื ืืืื ืืฆืืืจ ืคืืคืืืจืืืช ืืืืืจืืช ืจืง ืืฉื ืื ืืืืจืื ืืช. ืืื ืืงืก, ืืขืืืช ืืืช, ื ืฉืืจื ืจืืืื ืืืช ืืืืชื ืืืื ืืืืจื ืืขืฉืืจ.
ืืืืื ืฉืืชืขื ืืื ืชื ืืืืื ื ืืฉืืื ืืืฉืืื ืืืชืจ ืคืขืืืืช ืงืืจืืื. ืืืฉืืชื ืืช ืืืกืคืจ ืืืฆืืื ื ืฉื ืฆืคืืืช, ืืฆืืขืืช ืืืขืจืืช ืืื ื ืืฉื. ืื ื ืื ืฉืงืจื:
- ืื ืืฉืืื ืื ืฆืคืื ืืืืชืจ: arduino, ืขืืฆืื ืืชืจืื, ืคืืชืื ืืชืจืื, digest, ืงืืฉืืจืื, css, html, html5, nginx, ืืืืืจืืชืืื.
- ืื ืืฉืืื ื"ืืืืชื" ืืืืชืจ: vkontakte, ืืืืืจ, jquery, ืืืคืจื, c, html, ืคืืชืื ืืชืจืื, html5, css, ืขืืฆืื ืืชืจืื.
- ืื ืืฉืืื ืื ืืื ืื ืืืืชืจ: ืืืคืจื, ืกืงืืืค, ืขืฆืืื, vkontakte, ืืืืื ืื, ืขืืืื, ื ืืงืื, nginx, arduino, firefox.
ืืื, ืืืืืื ืฉืื ื ืืฉืืื ื ืืฉืืื, ืืชื ืืืื ืืืจื ืืืชื ืืคื ืชืืืจืืช (ืืืืฉืืืช ืืช ืืชืืฆืืืช ืขื
- ืืืฉื ืื ืฉื ืืช ืงืืืื ืฉื ืืืจ, ืืชืืื ืืคืืคืืืจืืื ืืืืชืจ (ืืกืืจ ืืืจื) ืื ืืืื, ืื ืืจืืืื, javascript, ืืืงืจืืกืืคื, ืืื ืืงืก, php, apple, java, python, ืชืื ืืช, ืกืืืจื-ืืคืื, ืคืืชืื, ios, ืกืืืจื-ืืค, ืจืฉืชืืช ืืืจืชืืืช
- ืืฉื ืช 2017, ืืคืืคืืืจืืื ืืืืชืจ ืืื javascript, python, java, ืื ืืจืืืื, ืคืืชืื, ืืื ืืงืก, c++, ืชืื ืืช, php, c#, ios, ืืืืืช ืืืื ื, ืืืืืช ืืืืข, ืืืงืจืืกืืคื, react
ืืืฉืจ ืืฉืืืื ืืช ืืืืจืืืื ืืืื, ืืคืฉืจ ืืฉืื ืื, ืืืฉื, ืืฆืขืืช ืื ืืฆืืื ืฉื ืคืืืชืื ืืืืืืืช ื-php, ืื ื"ืฉืงืืขื" ืฉื ื ืืฉืื ืืกืืืจื-ืืค ืืขืืืืชื ืฉื ืืืืืช ืืืื ื.
ืื ืืื ืืชืืื ื-Habrรฉ ืืฉ ืฆืืืขื ื ืืฉืืืช ืืจืืจื ืื ืื. ืืืืืื, ืื ื ืชืจืืกืจ ืชืืื ืฉื ืคืืฉื ืจืง ืคืขื ืืืช, ืืื ืคืฉืื ื ืจืื ืื ืืฆืืืงืื. ืื: "ืจืขืืื ืืื ืืืื ืืื ืืข ืฉื ืืงืืืื", "ืืชืืื ืืชืืื ืช ืชืงืืืืื", "ืืืืื ืกืืืื", "ืืจืื", "ืกืืคืจืืฉ", "ืื ืืข ืงืืืืจ", "ืืืจืื ืืขืฉืืช ืืฉืืช", "ืืฉ ืื ืฉืืขื ืืืืื ืช ืืฉืจ", "ืืชืืจืจ ืืื ืชืืื", "ืื ืืฆืืื ื ืืืืฆืื ืชืืื ืืฆืืืงืื". ืืื ืืงืืืข ืืช ืื ืืฉื ืฉื ืืืืจืื ืืืื, ืชืืืืช ืื ืืกืคืืงืืช - ืชืฆืืจื ืืืฆืข ืืืืืื ื ืืฉืืืื ืขื ืืืงืกืืื ืฉื ืืืืืจืื.
ื ืืชืื ืืคืืจื ืืืชืจ ืฉื ืชืืื ืืืืืจืื ืืืื ืืคืืกื ืืื. ืจืืฉืืช, ืื ื ืืืื ืืื ืืช ืืืื ืฉืื ืื ืืช ืืกืคืจ ืืฆืคืืืช ืืืฃ ืขืืืจ ืืืืจ ืขื ืกืื ืืชืืื ืฉืื. ืฉื ืืช, ืื ื ืจืืฆื ืืืื ืืช ืืจืฉืช ืืขืฆืืืช ืืืฆืืจ ืืงืกืืื ืืืืชื ืกืื ืื ืืื ืืืืจื ืืกืคืจ. ืื ืืืจืฉืื ๐
ื .ื ืืื ื ืืฆืคืฆืืฃ
ืืงืืจ: www.habr.com