์๋
ํ์ธ์ ํ๋ธ๋ฅด์
๋๋ค. ์์
๋ฐ์ดํฐ๋ ๋งค์ฐ ํฅ๋ฏธ๋ก์ด ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค. ๋ํ ์ฐ๋ฆฌ๋ ํด์ค์๋ค์ ๋ํ ์์ "๋ฏธ๋ ํ๊ฐ"๋ฅผ ๋ง๋ค์์ต๋๋ค. ์ปท ์๋์์ ๊ณ์๋ฉ๋๋ค.
๋ฐ์ดํฐ ์์ง
๋ถ์์ ์ํด ์ฌํด 2019๋ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ ๊ฒ์ ๋๋ค. ํนํ ์ด๋ฏธ csv ํ์์ผ๋ก ๊ธฐ์ฌ ๋ชฉ๋ก์ ๋ฐ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋จ์ ๊ฒ์ ๊ฐ ๊ธฐ์ฌ์์ ๋๊ธ์ ์ถ์ถํ๋ ๊ฒ๋ฟ์ ๋๋ค. ๋คํ์ค๋ฝ๊ฒ๋ ๋๊ธ์ ๊ฑฐ๊ธฐ์ ์ ์ฅ๋๋ฏ๋ก ์ถ๊ฐ ์์ฒญ์ด ํ์ํ์ง ์์ต๋๋ค.
๊ธฐ์ฌ์ ๋๊ธ์ ๊ฐ์กฐํ์ํ๋ ค๋ฉด ๋ค์ ์ฝ๋๋ก ์ถฉ๋ถํฉ๋๋ค.
r = requests.get("https://habr.com/ru/post/467453/")
data_html = r.text
comments = data_html.split('<div class="comment" id=')
comments_list = []
for comment in comments:
body = Str(comment).find_between('<div class="comment__message', '<div class="comment__footer"').find_between('>', '</div>')# .replace('n', '-')
if len(body) < 4: continue
body = body.translate(str.maketrans(dict.fromkeys("tnrvf")))
body = body.replace('"', "'").replace(',', " ").replace('<br>', ' ').replace('<p>', '').replace('</p>', '').replace(' ', ' ')
user = Str(comment).find_between('data-user-login', '>').find_between('"', '"')
date_str = Str(comment).find_between('<time class="comment__date-time comment__date-time_published', 'time>').find_between('>', '<')
vote = Str(comment).find_between('<div class="voting-wjt', '</div>').find_between('<span', 'span>').find_between('>', '<')
date = dateparser.parse(date_str)
csv_data = "{},{},{},{}".format(user, date, vote, body)
comments_list.append(csv_data)
์ด๋ฅผ ํตํด ๋ค์๊ณผ ๊ฐ์ ๋๊ธ ๋ชฉ๋ก์ ์ป์ ์ ์์ต๋๋ค(๊ฐ์ธ ์ ๋ณด ๋ณดํธ๋ฅผ ์ํด ๋ณ๋ช ์ ์ ๊ฑฐ๋จ).
xxxxxxx,2019-02-06 11:50:00,0,ะ ะผะพะถะฝะพ ะฟัะธะผะตั ะบะฐะบ ะธะผะตะฝะฝะพ?
xxxxxxx-02-24 16:15:00,+1,ะะพะฑะพะปััะต ัะธัะฐะนัะต ะฝะตะทะฐะฒะธัะธะผัะต ะพัะธัะธะฐะปัะฝัะต ะธััะพัะฝะธะบะธ ััะพะฑั ัะฐะบะธั
ะฒะพะฟัะพัะพะฒ ะฝะต ะฑัะปะพ.
xxxxxxx,2019-02-23 20:15:00,โ5,ะ ะฝะต ะฒะฐะถะฝะพ ะณะปะฐะฒะฝะพะต ะฒ ะธัะพะณะต ะฒ ะฟะปััะต ะพะบะฐะทะฐัััั
๋ณด์๋ค์ํผ ๊ฐ ๋๊ธ์ ๋ํด ์ฌ์ฉ์ ์ด๋ฆ, ๋ ์ง, ํ๊ฐ ๋ฐ ์ค์ ํ ์คํธ๋ฅผ ์ป์ ์ ์์ต๋๋ค. ์ฐ๋ฆฌ๊ฐ ์ด๊ฒ์ผ๋ก๋ถํฐ ๋ฌด์์ ์ป์ ์ ์๋์ง ๋ด ์๋ค.
๊ทธ๊ฑด ๊ทธ๋ ๊ณ , ์ฒ์์๋ ํ์ ์ ์์งํ๋ค๋ ์์ด๋์ด๊ฐ ์ฝ๊ฐ ๋ฌ๋์ต๋๋ค. ์ฌ์ฉ์๊ฐ ์ด๋ค ํ์ ์ ์ฃผ๋์ง ํ์ธํ๋ ๊ฒ์ ๋๋ค. ์๋ฅผ ๋ค์ด YouTube๋ฅผ ๋ณด๋ฉด ๊ฐ์ฅ ์ด์์ ์ธ ๋์์, ์์ ํ ์ฐธ๊ณ ์ฉ์ด๋ ๋ณด๋ ์๋ฃ์ฉ์ผ๋ก ์ฃผ๊ด์ ์ธ ์ ๋ณด๋ฅผ ์ ๋ฌํ์ง ์๋ ๋์์์ด๋ผ๋ ์ฌ์ ํ ์ผ์ ํ ์์ ๋ง์ด๋์ค๋ฅผ ์ป์ต๋๋ค. ๊ฐ์ค์ ์์ ํ ์์์ ์ผ๋ก ๋ชจ๋ ๊ฒ์ ์ ํ ์ข์ํ์ง ์๋ ์ฌ์ฉ์๊ฐ ์๋ค๋ ๊ฒ์ ๋๋ค. ์ด์ฉ๋ฉด ์ธ๋กํ ๋์ด ๋๋ ๋ค๋ฅธ ๊ณณ์์ ์์ฑ๋์ง ์์ ์๋ ์์ต๋๋ค. ์ด์ฉ๋ฉด ๋ ์ด์ Habrรฉ์ ์์ ํ์๊ฐ ์์ง๋ง ์ฐ์ธ์ฆ์ ์น๋ฃํ๊ธฐ ์ํด... ํ์ง๋ง ๊ฒฐ๊ณผ์ ์ผ๋ก ์ฌ๊ธฐ์๋ ํ์ธํ ์ ์์ต๋๋ค. ์๋ํ๋ฉด... ํ์ ์ ์ฃผ์ ๋ถ๋ค์ ๋ชฉ๋ก์ ๋๊ธ์ด๋ ๊ธ์ ์ ์ฅ๋์ง ์์ต๋๋ค. ์ฆ, ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ์ฌ ์์ ํ ๊ฒ์ ๋๋ค. ๊ฒฐ๊ณผ๋ "์ญ๋ฐฉํฅ" ํ๊ฐ์ ๋๋ค. ์ฌ์ฉ์๊ฐ ์ด๋ค ํ๊ฐ๋ฅผ _์์ _ํ๋์ง ํ์ธํ ์ ์์ต๋๋ค. ์์น์ ์ผ๋ก๋ ํฅ๋ฏธ ๋กญ์ต๋๋ค.
์ฒ๋ฆฌ
์ฐ์ , ์ ํต์ ์ธ ๋ฉด์ฑ
์กฐํญ์
๋๋ค. ์ด ๋ฑ๊ธ์ ์ด์ ์ ๋ชจ๋ ๋ฑ๊ธ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ๋น๊ณต์์ ์
๋๋ค. ์ด๋์์๋ ์ค์ํ์ง ์์๋ค๋ ๋ณด์ฅ์ ์์ต๋๋ค. ๊ธฐ์ ์ ์ธ ์ธ๋ถ ์ฌํญ์ ๊ด์ฌ์ด ์๋ ๋ถ๋ค์ ์ํด ๋ ์์ธํ ์ฝ๋๊ฐ ์ ๊ณต๋ฉ๋๋ค.
๊ทธ๋ผ ์์ํด ๋ณด๊ฒ ์ต๋๋ค. 2019๋ (์์ง ๋๋์ง ์์) ์ฌํด์ ๋๊ธ์ ๋ถ์ํ์ต๋๋ค. ๊ธ์ ์ฐ๋ ์์ ์ ์ฌ์ฉ์๋ ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค. 448533 ะบะพะผะผะตะฝัะฐัะธั, csv ํ์ผ์ ํฌ๊ธฐ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. 288MB. ๊ฐ๋ ฅํ๊ณ ์ธ์์ ์ ๋๋ค.
๊ธ์ฐ๊ธฐ ์๊ฐ
ํ์ผ๊ณผ ์ฃผ๋ง์ ๋๋์ด ์๊ฐ๋ณ๋ก ๋๊ธ์ ๊ทธ๋ฃนํํด ๋ณด๊ฒ ์ต๋๋ค.
์ฌ๊ธฐ์ ์ฐ๋ฆฌ๋ ์ ๋๊ฐ์ ๊ด์ฌ์ด ์๊ณ ์๋์ ๊ฐ์ ๊ด์ฌ์ด ์์ต๋๋ค. ๊ทธ๋ฅ '์๋ ๊ทธ๋๋ก' ๋ณธ๋ค๋ฉด,ะพ๋๋ถ๋ถ์ ๋๊ธ์ ๊ทผ๋ฌด์๊ฐ์ธ 10์๋ถํฐ 18์ ์ฌ์ด์ ์์ฑ๋์์ต๋๋ค๐ ๋ฐ๋ฉด, ์ฌ๊ธฐ๋ ์๊ฐ๋๋ฅผ ๊ณ ๋ คํ์ง ์์์ ์ง๋ฌธ์ ์์ง ์ด๋ ค์์ต๋๋ค.
์ฐ์ค ๋๊ธ ๋ถํฌ๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
๊ทธ๋ฌ๋ ์ฃผ์ค์๋ ๊ธ์ฆ์ด ๋๋ ท์ด ๋ณด์
๋๋ค. ์ฃผ๊ฐ ์ฃผ๊ธฐ์ฑ์ด ๋๋ ท์ด ๋ํ๋๋ฏ๋ก ์ฌ๋๋ค์ด ์ง์ฅ์์ Habr์ ๋ํด ์ฝ๊ณ ๋
ผํํ๊ณ ์๋ค๊ณ ์๋นํ ๋์ ํ์ ์ ๊ฐ์ง๊ณ ๋งํ ์ ์์ต๋๋ค(๊ทธ๋ฌ๋ ํ์คํ์ง๋ ์์ต๋๋ค).
๊ทธ๋ฐ๋ฐ ๋ฐ์ ๋ง์ด๋์ค ๋๋ ํ๋ฌ์ค ์๊ฐ ์์ผ์ด๋ ์๊ฐ๋์ ๋ค๋ฅธ์ง ์ฌ๋ถ์ ๋ํ ๊ฐ์ค์ ํ ์คํธํ๋ ค๋ ์์ด๋์ด๊ฐ ์์์ง๋ง ๊ด๊ณ๋ฅผ ์ฐพ์ ์ ์์์ต๋๋ค. ๋ฑ๊ธ์ด ๋ถ์ฌ๋ ์๊ฐ์ ์ ์ฅ๋์ง ์์ผ๋ฉฐ, ๋๊ธ ์์ ๊ณผ ์ง์ ์ ์ธ ์ฐ๊ด์ ์์ต๋๋ค.
ํ์
๋ฌผ๋ก ์ฌ์ดํธ์ ์ ํํ ์ฌ์ฉ์ ์๋ ๋ชจ๋ฆ ๋๋ค. ๊ทธ๋ฐ๋ฐ ์ฌํด ๋๊ธ์ ํ ๊ฐ ์ด์ ๋จ๊ธด ๋ถ๋ค์ ๋๋ต 25000 ์ฌ๋๋ค.
์ฌ์ฉ์๊ฐ ๋จ๊ธด ๋ฉ์์ง ์ ๊ทธ๋ํ๋ ๋งค์ฐ ํฅ๋ฏธ๋ก์ ๋ณด์ ๋๋ค.
์ฒ์์๋ ๋ ์์ ๋ ๋ฏฟ์ง ์์์ง๋ง ํ๋ฆผ์ด ์๋ ๊ฒ ๊ฐ์๋ค. 5%์ ์ฌ์ฉ์๊ฐ 60%์ ๋ฉ์์ง๋ฅผ ๋จ๊น๋๋ค.. ์ ์ฒด ๋ฉ์์ง์ 10% - 74%(์ฌํด๋ 450๋ง ๊ฐ). ๋๋ค์๋ ๋จ์ํ ์ฌ์ดํธ๋ฅผ ์ฝ๊ณ ๋๊ธ์ ๊ฑฐ์ ๋จ๊ธฐ์ง ์๊ฑฐ๋ ์ ํ ๋จ๊ธฐ์ง ์์ต๋๋ค (๋น์ฐํ ๋ด ๋ชฉ๋ก์ ํฌํจ๋์ง ์์์ต๋๋ค).
ํ๊ฐ
ํต๊ณ์ ๋ง์ง๋ง์ด์ ๊ฐ์ฅ ์ฌ๋ฏธ์๋ ๋ถ๋ถ์ธ ๋ฑ๊ธ์ผ๋ก ๋์ด๊ฐ๊ฒ ์ต๋๋ค. ๊ฐ์ธ ์ ๋ณด ๋ณดํธ๋ฅผ ์ํด ์ฌ์ฉ์์ ์ ์ฒด ๋ณ๋ช ์ ์ ๊ณตํ์ง ์์ ๊ฒ์ ๋๋ค. ์ํ๋ ์ฌ๋์ ๋๊ตฌ๋ ์ง ์์๋ณผ ์ ์์ ๊ฒ์ ๋๋ค.
์ ๋๊ธ ์ ์ฌํด ์์ 5์๋ VoXXXX(๋๊ธ 3377๊ฐ), 0xdXXXXX(๋๊ธ 3286๊ฐ), strXXXX(๋๊ธ 3043๊ฐ), AmXXXX(๋๊ธ 2897๊ฐ) ๋ฐ khXXXX(๋๊ธ 2748๊ฐ)๊ฐ ์ฐจ์งํ์ต๋๋ค.
์ ๋ฐ์ ํํ ์, ์์ 5์์๋ amXXXX(๋๊ธ 1395๊ฐ, ํ์ +3231/-309), tvXXXX(๋๊ธ 1544๊ฐ, ํ์ +3231/-97), WhuXXXX(๋๊ธ 921๊ฐ, ํ์ +2288/-13), MTXXXX(๋๊ธ 1328๊ฐ, +1383 /-7) ๋ฐ amaXXXX(๋๊ธ 736๊ฐ, ํ์ +1340/-16).
์ ์ ๋์ ๊ธ์ ์ ํ๊ฐ (์์ ๋ถ์ ์ ์ผ๋ก ํ๊ฐ๋ ๋๊ธ) ์๋จ์ ์๋จ์ ๋ค์์ด ์ฐจ์งํฉ๋๋ค.
๋จ์ ๋ ํฅ๋ฏธ๋กญ๋ค. ํ ์์ง๋ ๋ง์ด๋์ค ์ ์ฌํด์๋ siXX(ํ๋ฌ์ค 473๊ฐ, ๋ง์ด๋์ค 699๊ฐ), khXX(ํ๋ฌ์ค 1915๊ฐ, ๋ง์ด๋์ค 573๊ฐ) ๋ฐ nicXXXXX(ํ๋ฌ์ค 456๊ฐ, ๋ง์ด๋์ค 487๊ฐ)๊ฐ ์ฐจ์งํ์ต๋๋ค. ํ์ง๋ง ๋ณด์๋ค์ํผ ์ด๋ฌํ ์ฌ์ฉ์๋ค์ ๊ธ์ ์ ์ธ ์๊ฒฌ์ ์ถฉ๋ถํ ๊ฐ๊ณ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ฐ๋ฅด๋ฉด ์ ๋ ๋ง์ด๋์ค ์ํฐํ ํฝ์๋ vladXXXX(๋๊ธ 55๊ฐ, ๋ง์ด๋์ค 84๊ฐ, ํ๋ฌ์ค 0๊ฐ), ekoXXXX(์ฝ๋ฉํธ 77๊ฐ, ๋ง์ด๋์ค 92๊ฐ, ํ๋ฌ์ค 1๊ฐ), iMXXXX(๋๊ธ 225๊ฐ, ๋ง์ด๋์ค 205๊ฐ, ํ๋ฌ์ค 12๊ฐ)๊ฐ ํฌํจ๋ฉ๋๋ค.
๊ฒฐ๋ก
๊ณํ๋ ๋ชจ๋ ๊ฒ์ ๊ณ์ฐํ ์๋ ์์์ง๋ง ํฅ๋ฏธ๋ก์ ๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
๋ณด์๋ค์ํผ ํ๋ ์๊ฐ ์ด๋ ๊ฒ ์ ์ ๋ฐ์ดํฐ์ธํธ๋ผ๋ ๋ถ์์ ์ํ ํฅ๋ฏธ๋ก์ด ๋ฐ์ดํฐ๋ฅผ ์ ๊ณตํ ์ ์์ต๋๋ค. โ์๋ ํด๋ผ์ฐ๋โ ๊ตฌ์ถ๋ถํฐ ํ
์คํธ ๋ถ์๊น์ง ์์ง ํํค์ณ์ผ ํ ๋ถ๋ถ์ด ๋ง์ต๋๋ค. ํฅ๋ฏธ๋ก์ด ๊ฒฐ๊ณผ๊ฐ ๋์ค๋ฉด ๋ฐํํ๊ฒ ์ต๋๋ค.
์ถ์ฒ : habr.com