๐Ÿ’ช ๋„ค์ด๋ฒ„ ๊ธฐ์‚ฌ ํฌ๋กค๋ง ๐Ÿ’ช

parkeuยท2022๋…„ 9์›” 1์ผ
0

ABC๋ถ€ํŠธ์บ ํ”„

๋ชฉ๋ก ๋ณด๊ธฐ
16/55

๐Ÿผ ํ•œ๊ธ€ ๊นจ์ง ๋ฐฉ์ง€

import matplotlib as mpl
import matplotlib.pyplot as plt

%config InlineBackend.figure_format = 'retina'

!apt -qq -y install fonts-nanum

import matplotlib.font_manager as fm
fontpath = '/usr/share/fonts/truetype/nanum/NanumBarunGothic.ttf'
font = fm.FontProperties(fname=fontpath, size=9)
plt.rc('font', family='NanumBarunGothic') 
mpl.font_manager._rebuild()

๐Ÿ‘๏ธ ๋„ค์ด๋ฒ„ ๋žญํ‚น๋‰ด์Šค(๋งŽ์ด ๋ณธ) ํฌ๋กค๋ง

๐Ÿ˜ค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ž„ํฌํŠธ

from urllib.request import urlopen
from bs4 import BeautifulSoup

import pandas as pd
import datetime
from pytz import timezone

๐Ÿ‘๏ธ ๋งŽ์ด ๋ณธ ๋žญํ‚น๋‰ด์Šค ํฌ๋กค๋ง

๐Ÿ‘€ ๋„ค์ด๋ฒ„ ๋žญํ‚น๋‰ด์Šค ์ด๋Ÿฐ์‹์œผ๋กœ ์ƒ๊ฒผ๋‹ต๋‹ˆ๋‹ค !

# 1) ๋ฐ์ดํ„ฐ ํ”„๋ ˆ์ž„ ์ƒ์„ฑ
data = pd.DataFrame(columns=['์–ธ๋ก ์‚ฌ๋ช…', '์ˆœ์œ„', '๊ธฐ์‚ฌ์ œ๋ชฉ', '๊ธฐ์‚ฌ๋งํฌ', '์ˆ˜์ง‘์ผ์ž'])

# 2) ๋„ค์ด๋ฒ„ ๋žญํ‚น๋‰ด์Šค ์ ‘์†์ฃผ์†Œ
url = 'https://news.naver.com/main/ranking/popularDay.naver'

# 3) url์—์„œ html๊ฐ€์ ธ์˜ค๊ธฐ
html = urlopen(url)

# 4) HTML์„ ํŒŒ์‹ฑํ•  ์ˆ˜ ์žˆ๋Š” object๋กœ ๋ณ€ํ™˜
bsObject = BeautifulSoup(html, 'html.parser',from_encoding='utf-8')

# 5) ๋„ค์ด๋ฒ„ ๋žญํ‚น๋‰ด์Šค ์ •๋ณด๊ฐ€ ์žˆ๋Š” 12๊ฐœ์˜ div๋งŒ ๊ฐ€์ ธ์˜ค๊ธฐ
div = bsObject.find_all('div', {'class', 'rankingnews_box'})

๐Ÿ‘€ ์ด div๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒโ—

# 6) ๋„ค์ด๋ฒ„ ๋žญํ‚น๋‰ด์Šค ์ƒ์„ธ์ •๋ณด ์ถ”์ถœ
for index_div in range(0, len(div)):
	# 6-1) ์–ธ๋ก ์‚ฌ๋ช… ์ถ”์ถœ
    strong = div[index_div].find('strong', {'class','rankingnews_box'})
    press = strong.text


๐Ÿ‘€ ์—ฌ๊ธฐ์˜ strong ํƒœ๊ทธ๋กœ ์–ธ๋ก ์‚ฌ๋ช…์„ ์ถ”์ถœํ•˜๋Š” ๊ฒƒโ—

	# 6-2) ๋žญํ‚น๋‰ด์Šค
    ul = div[index_div].find_all('ul',{'class', 'rankingnews_list'})


๐Ÿ‘€ ์—ฌ๊ธฐ์˜ ul ํƒœ๊ทธ๋กœ ๋žญํ‚น๋‰ด์Šค ์ถ”์ถœํ•˜๋Š” ๊ฒƒ โ— ๋ฐ‘์˜ ๊ณผ์ •๋„ ์œ„์™€ ๋น„์Šทํ•˜๋‹ˆ ๋ฐ‘๋ถ€๋ถ„์˜ ํƒœ๊ทธ์„ค๋ช… ์‚ฌ์ง„์€ ์ƒ๋žตํ•˜๊ฒ ์๋‹ˆ๋‹ค . . .

  for index_r in range(0, len(ul)):
      li = ul[index_r].find_all('li') # 5๊ฐœ์˜ liํƒœ๊ทธ
      for index_l in range(0, len(li)):
        try: # ์˜ˆ์™ธ์ฒ˜๋ฆฌ
          # ์ˆœ์œ„
          rank = li[index_l].find('em',{'class', 'list_ranking_num'} ).text
          # ๋‰ด์Šค์ œ๋ชฉ
          title = li[index_l].find('a').text
          # ๋‰ด์Šค๋งํฌ
          link = li[index_l].find('a').attrs['href']
          # 7) dataframe ์ €์žฅ(append)
          data = data.append({'์–ธ๋ก ์‚ฌ๋ช…':press,
                              '์ˆœ์œ„' : rank,
                              '๊ธฐ์‚ฌ์ œ๋ชฉ':title,
                              '๊ธฐ์‚ฌ๋งํฌ': link,
                              '์ˆ˜์ง‘์ผ์ž': datetime.datetime.now(timezone('Asia/Seoul')).strftime('%Y-%m-%d %H:%M:%S')}, ignore_index=True)  # ๊ธฐ์กด ์ธ๋ฑ์Šค ๋ฌด์‹œ
        except:
          pass # ์˜ค๋ฅ˜๊ฐ€ ๋‚˜๋„ ๊ณ„์† ์ง„ํ–‰ (break๋Š” ๋ฉˆ์ถค)

        print('Completes of'+rank+' : '+title)
print('----------------------------------')
print(data)

๐Ÿ‘ ์ „์ฒด์ฝ”๋“œ

data = pd.DataFrame(columns=['์–ธ๋ก ์‚ฌ๋ช…','์ˆœ์œ„','๊ธฐ์‚ฌ์ œ๋ชฉ','๊ธฐ์‚ฌ๋งํฌ','์ˆ˜์ง‘์ผ์ž'])

url = 'https://news.naver.com/main/ranking/popularDay.naver'

html = urlopen(url)

bsObject = BeautifulSoup(html, 'html.parser',from_encoding='utf-8')

div = bsObject.find_all('div', {'class','rankingnews_box'})

for index_div in range(0,len(div)):
  strong = div[index_div].find('strong', {'class','rankingnews_name'})
  press = strong.text

  ul = div[index_div].find_all('ul',{'class', 'rankingnews_list'})

  for index_r in range(0, len(ul)):
    li = ul[index_r].find_all('li') 
    for index_l in range(0, len(li)):
      try: 

        rank = li[index_l].find('em',{'class', 'list_ranking_num'} ).text

        title = li[index_l].find('a').text

        link = li[index_l].find('a').attrs['href']

        data = data.append({'์–ธ๋ก ์‚ฌ๋ช…':press,
                            '์ˆœ์œ„' : rank,
                            '๊ธฐ์‚ฌ์ œ๋ชฉ':title,
                            '๊ธฐ์‚ฌ๋งํฌ': link,
                            '์ˆ˜์ง‘์ผ์ž': datetime.datetime.now(timezone('Asia/Seoul')).strftime('%Y-%m-%d %H:%M:%S')}, ignore_index=True)  # ๊ธฐ์กด ์ธ๋ฑ์Šค ๋ฌด์‹œ
      except:
        pass # ์˜ค๋ฅ˜๊ฐ€ ๋‚˜๋„ ๊ณ„์† ์ง„ํ–‰ (break๋Š” ๋ฉˆ์ถค)

      print('Completes of'+rank+' : '+title)
print('----------------------------------')
print(data)

๐Ÿ–จ๏ธ ์ถœ๋ ฅ

๐Ÿ™‰ ๋ฐ์ดํ„ฐ ์ €์žฅ

data.tocsv('๋„ค์ด๋ฒ„๋žญํ‚น๋‰ด์Šค๋Œ“๊ธ€๋งŽ์€๋‰ด์Šค_ํฌ๋กค๋ง_20220901.csv', encoding='utf-8-sig', index=False)

๐Ÿ‘ ๋Œ“๊ธ€๋งŽ์€ ๋‰ด์Šค๋Š” ๋งŽ์ด ๋ณธ ๋‰ด์Šค ์ฝ”๋“œ์—์„œ ๋งํฌ๋งŒ ๋ฐ”๊ฟ”์ฃผ๋ฉด ๋จ!


โœจ ๋งŽ์ด ๋ณธ ๋‰ด์Šค ๋ฐ์ดํ„ฐ ์ค€๋น„

df = pd.read_csv('/content/๋„ค์ด๋ฒ„๋žญํ‚น๋‰ด์Šค_๋งŽ์ด๋ณธ๋‰ด์Šค_ํฌ๋กค๋ง_20220901.csv')
df.head()

๐Ÿช„ ๋ฐ์ดํ„ฐ ์ „์ฒ˜๋ฆฌ

df['๊ธฐ์‚ฌ์ œ๋ชฉ'].replace('[^\w]',' ', regex=True, inplace=True)

day_df = pd.read_csv('/content/๋„ค์ด๋ฒ„๋žญํ‚น๋‰ด์Šค_๋งŽ์ด๋ณธ๋‰ด์Šค_ํฌ๋กค๋ง_20220901.csv')
memo_df = pd.read_csv('/content/๋„ค์ด๋ฒ„๋žญํ‚น๋‰ด์Šค_๋Œ“๊ธ€๋งŽ์€๋‰ด์Šค_ํฌ๋กค๋ง_20220901.csv')

day_df['๊ธฐ์‚ฌ์ œ๋ชฉ'].replace('[^\w]',' ', regex=True, inplace=True)

memo_df['๊ธฐ์‚ฌ์ œ๋ชฉ'].replace('[^\w]',' ', regex=True, inplace=True)

๐Ÿ‘€ ๊ธฐ์‚ฌ์ œ๋ชฉ์—์„œ์˜ ํŠน์ˆ˜๋ฌธ์ž ์ œ๊ฑฐ(๋„์–ด์“ฐ๊ธฐ ์ œ์™ธ)


๐Ÿ‘๏ธ ์›Œ๋“œํด๋ผ์šฐ๋“œ ์‹œ๊ฐํ™”

๐Ÿ˜ค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ž„ํฌํŠธ

import matplotlib.pyplot as plt
from wordcloud import WordCloud, STOPWORDS, ImageColorGenerator

๐Ÿช„ ๋ฐ์ดํ„ฐ ์ „์ฒ˜๋ฆฌ

# WordCluod ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ๋Š” ํ•˜๋‚˜์˜ ๋ฌธ์ž์—ด๋กœ ์ œ๊ณตํ•ด์•ผ ํ•จ
# ๋‰ด์Šค์ œ๋ชฉ์„ ํ•˜๋‚˜์˜ text๋กœ ๋ฐ์ดํ„ฐ ์ „์ฒ˜๋ฆฌ
day_text = " ".join(li for li in day_df.๊ธฐ์‚ฌ์ œ๋ชฉ.astype(str)) #ํ•œ ์นธ ๋–ผ๊ณ  join

memo_text = " ".join(clean_text(li) for li in memo_df.๊ธฐ์‚ฌ์ œ๋ชฉ.astype(str))


๐Ÿ‘€ ์ด๋Ÿฐ์‹์œผ๋กœ ํ•˜๋‚˜์˜ ๋ฌธ์ž์—ด๋กœ ๋งŒ๋“ค์–ด์ง!!

๐Ÿ”… ๋งŽ์ด ๋ณธ ๋‰ด์Šค ์‹œ๊ฐํ™”

plt.subplots(figsize=(25,15))
wordCloud = WordCloud(background_color='black', width=1000, height=700, font_path=fontpath).generate(day_text)
plt.axis('off')
plt.imshow(wordCloud, interpolation='bilinear')
plt.show()

๐Ÿ‘€ 9์›” 1์ผ 14์‹œ 43๋ถ„ ์ˆ˜์ง‘

๐Ÿ”† ๋Œ“๊ธ€๋งŽ์€ ๋‰ด์Šค ์‹œ๊ฐํ™”

# ํŠน์ • ๋ชจ์–‘์„ ๊ฐ€์ง„ ์›Œ๋“œํด๋ผ์šฐ๋“œ ๋งŒ๋“ค๊ธฐ
# ๋งˆ์Šคํฌ ์ด๋ฏธ์ง€๋ฅผ ์ฐพ์•„์„œ ์ ์šฉ
import numpy as np
from PIL import Image # Python Imaging Library
mask = Image.open('/content/sphx_glr_masked_002.png')
mask = np.array(mask)

plt.subplots(figsize=(15,15))
wordCloud = WordCloud(background_color='white', width=500, height=700, mask=mask,font_path=fontpath).generate(memo_text)
plt.axis('off')
plt.imshow(wordCloud, interpolation='bilinear')
plt.show()

๐Ÿ‘€ 20220901 23์‹œ 2๋ถ„์— ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘

  • ๋งŽ์ด ๋ณธ ๋‰ด์Šค

  • ๋Œ“๊ธ€ ๋งŽ์€ ๋‰ด์Šค

์–ธ์ œ ์ˆ˜์ง‘ํ•˜๋ƒ์— ๋”ฐ๋ผ ๊ฒฐ๊ณผ๋Š” ๋‹ฌ๋ผ์ง„๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Œ ~~!!
๊ธ€์ž๊ฐ€ ํด์ˆ˜๋ก ๊ธฐ์‚ฌ์—์„œ ๋งŽ์ด ์–ธ๊ธ‰(?)๋๋‹ค๋Š” ๊ฒƒ


๐Ÿ‘๏ธ ๋„ค์ด๋ฒ„ ์—ฐ์˜ˆ๋žญํ‚น๋‰ด์Šค ํฌ๋กค๋ง

๐Ÿ˜ค ์ค€๋น„ & ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ž„ํฌํŠธ

#์ด ๋ถ€๋ถ„์€ ์ฒ˜์Œ ํ•œ๋ฒˆ๋งŒ ์‹คํ–‰ํ•˜๋ฉด ๋จ. ์‚ฌ๋žŒ์ด ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๊ฒ€์ƒ‰ํ•˜๋Š” ํŠน์ง• ํƒ‘์žฌ
!pip install selenium
!apt-get update
!apt install chromium-chromedriver  # ๋งˆ์šฐ์Šค, ํ‚ค๋ณด๋“œ ์ž…๋ ฅ ํšจ๊ณผ ์ค„ ์ˆ˜ ์žˆ๋‹ค.
!cp /usr/lib/chromium-browser/chromedriver /usr/bin

# ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ž„ํฌํŠธ
from selenium import webdriver
from bs4 import BeautifulSoup
import time
from pytz import timezone
import datetime

import pandas as pd

import warnings
warnings.filterwarnings('ignore')

๐Ÿงœ ์—ฐ์˜ˆ๋žญํ‚น๋‰ด์Šค ํฌ๋กค๋ง

# 1 ๋ฐ์ดํ„ฐ ํ”„๋ ˆ์ž„ ์ค€๋น„ ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ํฌ๋กฌ์„ ์ผœ๊ณ  3์ดˆ ์‰ฌ๊ณ  (๋กœ๋ด‡ ์•„๋‹Œ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๊ธฐ ์œ„ํ•ด)
data = pd.DataFrame(columns = ['์ˆœ์œ„', '๊ธฐ์‚ฌ์ œ๋ชฉ', '๊ธฐ์‚ฌ๋งํฌ', '๊ธฐ์‚ฌ๋‚ด์šฉ', '์ˆ˜์ง‘์ผ์ž'])

options = webdriver.ChromeOptions()
options.add_argument('--headless')        # 
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
driver = webdriver.Chrome('chromedriver', options=options)
driver.get("https://entertain.naver.com/ranking")
driver.implicitly_wait(3)

time.sleep(1.5)

driver.execute_script('window.scrollTo(0, 800)')
time.sleep(3)

html_source = driver.page_source
soup = BeautifulSoup(html_source, 'html.parser')

# class๋กœ css ์ •์˜๋˜์–ด์žˆ์œผ๋ฉด .classname
# id๋กœ css๊ฐ€ ์ •์˜๋˜์–ด์žˆ์œผ๋ฉด #idname ๋กœ ์“ฐ๋ฉด ๋œ๋‹ค.
# div > ul > li ์ƒ์œ„ ํ…Œ๊ทธ๊ฐ€ ์žˆ์œผ๋ฉด ์ƒ์œ„ํƒœ๊ทธ > ์ž์‹ํƒœ๊ทธ > ์ž์‹์˜ ์ž์‹ํƒœ๊ทธ ๋กœ ์ด๋™๊ฐ€๋Šฅ

li = soup.select('ul#ranking_list > li')  #  #ranking_list = > id๊ฐ€ ranking_list์ธ๊ฑฐ/ ulxprmdml id๊ฐ€ ranking_list์ธ ๊ฒƒ๋“ค์˜ li๋ฅผ ๊ฐ€์ ธ์™€์คŒ

for index_l in range(0, len(li)):
  try:
    # ์ˆœ์œ„
    rank = li[index_l].find('em', {'class', 'blind'}).text.replace('\n', '').replace('\t', '').strip()
    # ๊ธฐ์‚ฌ์ œ๋ชฉ
    title = li[index_l].find('a', {'class', 'tit'}).text.replace('\n', '').replace('\t', '').strip()
    # ๊ธฐ์‚ฌ๋‚ด์šฉ
    summary = li[index_l].find('p', {'class', 'summary'}).text.replace('\n', '').replace('\t', '').strip()
    # ๊ธฐ์‚ฌ๋งํฌ
    link = li[index_l].find('a').attrs['href']

    data = data.append({'์ˆœ์œ„' : rank,
                        '๊ธฐ์‚ฌ์ œ๋ชฉ' : title,
                        '๊ธฐ์‚ฌ๋งํฌ' : 'https://entertain.naver.com'+link,
                        '๊ธฐ์‚ฌ๋‚ด์šฉ' : summary,
                        '์ˆ˜์ง‘์ผ์ž' : datetime.datetime.now(timezone('Asia/Seoul')).strftime('%Y-%m-%d %H:%M:%S')}, 
                       ignore_index=True)
    print('complets of '+ rank + ' : ' + title)

  except:
    pass

print('---------------------------------------------------')
print(data)

# ์ €์žฅ
data.to_csv('๋„ค์ด๋ฒ„์—ฐ์˜ˆ๋‰ด์Šค.csv', encoding='utf-8-sig')

๐Ÿ‘๏ธ ์›Œ๋“œํด๋ผ์šฐ๋“œ ์‹œ๊ฐํ™”

๐Ÿ˜ค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ž„ํฌํŠธ & ํŠน์ˆ˜๋ฌธ์ž ์ œ๊ฑฐ

# clean_textํ•จ์ˆ˜๋กœ ํŠน์ˆ˜๊ธฐํ˜ธ ์—†์• ๊ธฐ(์ „์ฒ˜๋ฆฌ ํ•„์š”์—†์Œ)
import matplotlib.pyplot as plt
from wordcloud import WordCloud, STOPWORDS, ImageColorGenerator
import re
 
def clean_text(inputString):
  text_rmv = re.sub('[-=+,#/\?:^.@*\"โ€ป~ใ†!ใ€โ€˜|\(\)\[\]`\'โ€ฆใ€‹\โ€\โ€œ\โ€™ยท]', ' ', inputString)
  return text_rmv

๐Ÿ”… ์—ฐ์˜ˆ๋‰ด์Šค๋žญํ‚น ์‹œ๊ฐํ™”

๐Ÿ‘€ 20220901 23์‹œ 2๋ถ„ ๊ธฐ์ค€!

df = pd.read_csv('/content/๋„ค์ด๋ฒ„์—ฐ์˜ˆ๋‰ด์Šค.csv')

df = df.astype({'๊ธฐ์‚ฌ์ œ๋ชฉ' : 'string'})
df['๊ธฐ์‚ฌ์ œ๋ชฉ'].replace('[^\w]', ' ', regex = True, inplace = True) 


text = ' '.join(clean_text(li) for li in df.๊ธฐ์‚ฌ์ œ๋ชฉ.astype(str))  

plt.subplots(figsize = (25, 15))
wordcloud = WordCloud(background_color = 'black', width = 1000, height = 700, font_path = fontpath).generate(text)
plt.axis('off')
plt.imshow(wordcloud, interpolation = 'bilinear')
plt.show()

๐Ÿ”† ๋งˆ์Šคํฌ๋ชจ์–‘์œผ๋กœ ์‹œ๊ฐํ™”

๐Ÿ‘€ ๋„ค์ด๋ฒ„ ๋Œ“๊ธ€๋งŽ์€ ๋‰ด์Šค์—์„œ ๋งˆ์Šคํฌ ์ผ๋˜ ๊ฒƒ์ฒ˜๋Ÿผ ์—ฐ์˜ˆ๋‰ด์Šค๋„ ์ ์šฉ

# ํŠน์ •๋ชจ์–‘์„ ๊ฐ€์ง„ ์›Œ๋“œ ํด๋ผ์šฐ๋“œ ๋งŒ๋“ค๊ธฐ
import numpy as np
from PIL import Image  # Python Imaging Library

mask = Image.open('/content/img3.png')
mask = np.array(mask)

plt.subplots(figsize = (25, 15))
wordcloud = WordCloud(background_color = 'black', width = 500, height = 700, mask = mask, font_path = fontpath).generate(text)
plt.axis('off')
plt.imshow(wordcloud, interpolation = 'bilinear')
plt.show()

๐Ÿ‘€ ํƒ์ •๋ชจ์–‘์œผ๋กœ ์ ์šฉ ~~


๐Ÿšฉ ์†Œ๊ฐ ๐Ÿšฉ

์˜ค๋Š˜ ํ•˜๋ฃจ๋„ ์ด๋ฒˆ์ฃผ๋„ ์ •๋ง ๊ธธ๋‹ค . . . . . . ๊ทธ๋ž˜๋„ ์ง‘์™€์„œ ์˜ค๋Š˜ ๊ธฐ์ˆ  ๋ธ”๋กœ๊ทธ ์—ฌ๊ธฐ๊นŒ์ง€ ์ •๋ฆฌํ•œ ๋‚˜ ,, ์นญ์ฐฌํ•ด^๐Ÿ˜›๐Ÿ™ƒ^ ๋ฐ์ดํ„ฐ๋ถ„์„์‹œ๊ฐํ™” ํŒ€ํ”„๋กœ์ ํŠธ ํ•œ ์ฝ”๋“œ๋„ ์ •๋ฆฌํ•˜๋ ค๊ณ  ํ–ˆ๋Š”๋ฐ ์˜ค๋Š˜์€ ๋„ˆ๋ฌด ํ”ผ๊ณคํ•ด์„œ ๋‰ด์Šค ํฌ๋กค๋ง ํ•œ ๋ถ€๋ถ„๋งŒ ์ •๋ฆฌ . . ~~ ๋ฒŒ์จ ๋‚ด์ผ ๊ธˆ์š”์ผ์ธ๊ฒŒ ๋ฏฟ๊ธฐ์ง€์•Š์ง€๋งŒ ๋„ˆ๋ฌด์กฐํƒ€.๋„ˆ๋ฌด๋„ˆ๋ฌด.๊ทธ๋ฆฌ๊ณ ๋„ˆ๋ฌด๋ฐฐ๊ณ ํ”„๋‹ค ๋นจ๋ฆฌ์ž์•ผ์ง€ ใ…‡ ใ… ์˜ค๋Š˜ ๋‰ด์Šค๋“ค์„ ์›Œ๋“œํด๋ผ์šฐ๋“œ๋กœ ์‹œ๊ฐํ™” ํ•˜๋ฉด ๊ธ€์ž๋“ค์ด ๋ˆˆ์— ๋”ฑ ๋ณด์—ฌ์„œ ์žฌ๋ฐŒ์—ˆ๋‹ค. ์—ฐ์˜ˆ๋‰ด์Šค ํฌ๋กค๋ง ํ•œ ๋ถ€๋ถ„์ด ์•„์ง ์™„๋ฒฝํžˆ ์ˆ™์ง€๋Š” ์•ˆ๋œ ๊ฒƒ ๊ฐ™์œผ๋‹ˆ ์ฃผ๋ง์— ๊ผญ ๋‹ค์‹œ ๋ด๋ณด๊ธฐ !

profile
๋ฐฐ๊ณ ํŒŒ์šฉ.

0๊ฐœ์˜ ๋Œ“๊ธ€