๊ด€๋ฆฌ ๋ฉ”๋‰ด

Hello creators ๐Ÿ™Œ

3-7_์›น์Šคํฌ๋ž˜ํ•‘(ํฌ๋กค๋ง) ๊ธฐ์ดˆ 1 ๋ณธ๋ฌธ

[WEB ๊ฐœ๋ฐœ]/์ŠคํŒŒ๋ฅดํƒ€์ฝ”๋”ฉํด๋Ÿฝ_์›น๊ฐœ๋ฐœ์ข…ํ•ฉ๋ฐ˜

3-7_์›น์Šคํฌ๋ž˜ํ•‘(ํฌ๋กค๋ง) ๊ธฐ์ดˆ 1

๋ถ€์‹œ๋งค๋‚˜_HA 2023. 10. 13. 07:07
728x90
๋ฐ˜์‘ํ˜•

โ… . ์ด๋ฒˆ ํšŒ์ฐจ ํ•™์Šต ๋ชฉํ‘œ (goal)


1. ๋ฐฐ์šฐ๊ณ ์ž ํ•˜๋Š” ๊ฒƒ

  • ์ œ๋ชฉ & ํ‰์  ๋“ฑ์„ ๊ฐ€์ ธ์˜ค๊ธฐ


โ…ก. ํฌ๋กค๋ง์„ ํ•˜๋ ค๋ฉด 2๊ฐ€์ง€๋ฅผ ํ•ด์•ผ ํ•จ

1. ํ•ด๋‹น ์ฃผ์†Œ์— ์š”์ฒญํ•ด์„œ ํ•ด๋‹น html ์„ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ!

  • ์ด ์ฃผ์†Œ์— ๊ฐ€์„œ html ์„ ๊ฐ€์ ธ์™€์•ผ ํ•จ.

  • ์ด๊ฑด requests ๋ฅผ ๊ฐ€์ง€๊ณ  ์ด๋ฏธ ํ–ˆ์Œ.

๐Ÿ‘‰ ์ฆ‰, requests ํŒจํ‚ค์ง€๋ฅผ ํ†ตํ•ด html ์„ ๊ฐ€์ ธ์˜ค๋Š” ์ž‘์—…์„ ์ด๋ฏธ ํ–ˆ์Œ.


โญ ์•„, `requests` ๋ฅผ ํ†ตํ•ด ํ•˜๋Š”๊ฒŒ html ์„ ๊ฐ€์ ธ์˜ค๋Š” ๊ฑฐ ๊ตฌ๋‚˜! โญโญโญโญโญโญ

2. ๊ฐ€์ ธ์˜จ html ์•ˆ์—์„œ '์ œ๋ชฉ' ์„ ์ฐพ์œผ๋ ค๋ฉด? : beautifulsoup ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ™œ์šฉ


1) beautifulsoup ์„ค์น˜

  1. pip ์—…๊ทธ๋ ˆ์ด๋“œ
    python3 -m pip install --upgrade pip
    python -m pip install --upgrade pip
    
โ“ ์ด ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ์™œ ํ•ด์•ผ ํ•˜๋Š” ๊ฑฐ์ง€? ์•„์ง ์ž˜ ๋ชจ๋ฅด๊ฒ ์Œ 


<br>

2. beautifulsoup4 ์„ค์น˜
``` powershell
pip install beautifulsoup4
  • ๊ฒฐ๊ณผ๋ฌผ

2) ๋ฝ‘๊ณ  ์‹ถ์€ ๊ฒƒ ์šฐํด๋ฆญ > ๊ฒ€์‚ฌ์—์„œ copy selector

  1. ๋ฝ‘๊ณ  ์‹ถ์€ ๊ฒƒ > ์šฐํด๋ฆญ > ๊ฒ€์‚ฌ
  1. copy selector


3) beautifulsoup ๊ธฐ๋ณธ ์˜ˆ์ œ ์ฝ”๋“œ ๋„ฃ์–ด๋ณด๊ธฐ

#python_beaufifulsoup_ํฌ๋กค๋ง_์˜ˆ์ œ์ฝ”๋“œ

import requests
from bs4 import BeautifulSoup

# ์‹ค์ œ ์‚ฌ๋žŒ์ธ ๊ฒƒ ์ฒ˜๋Ÿผ ํ•ด์ฃผ๋ ค๊ณ  (๋งˆ์น˜, ๋ธŒ๋ผ์šฐ์ €์—์„œ call ์„ ๋‚ ๋ฆฌ๋Š” ๊ฒƒ ์ฒ˜๋Ÿผ ํ•ด์ฃผ๋ ค๊ณ , ์‚ฌ๋žŒ์ธ ๊ฒƒ ์ฒ˜๋Ÿผ ํ•ด์ฃผ๋ ค๊ณ )
headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'}

# ํ•ด๋‹น url ์—์„œ html ์„ ๋ฐ›์•„์˜จ๋‹ค. (โœ… url ๋ณ€๊ฒฝํ•ด์„œ ์‚ฌ์šฉ)
data = requests.get('https://movie.naver.com/movie/sdb/rank/rmovie.naver?sel=pnt&date=20210829',headers=headers)

# html์—์„œ ์›ํ•˜๋Š” ๋ถ€๋ถ„์„ ์†Ž์•„๋‚ธ๋‹ค.
soup = BeautifulSoup(data.text, 'html.parser')

# ์ด์ œ ๋ถ€ํ„ฐ ๋‚˜์˜ค๋Š” ๋ฌธ๋ฒ•์€ beaurifulsoup ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ž์ฒด์˜ ๋ฌธ๋ฒ•(syntax)
print(soup)

  • ๊ฒฐ๊ณผ๋ฌผ
    • ๊ทธ๋Ÿฌ๋ฉด, ์ง„์งœ, html ๋ฉ์–ด๋ฆฌ ๊ฐ€ ๋“ค์–ด์˜จ๋‹ค.

4) soup.select_one ๊ณผ ==ํ•˜๋‚˜์˜== copy selector ๋ฅผ ์ด์šฉํ•ด์„œ html ๋ฉ์–ด๋ฆฌ์— ์ค‘ ์›ํ•˜๋Š” ๋ถ€๋ถ„์„ ์ถ”๋ฆฌ๊ธฐ

#python_beaufifulsoup_ํฌ๋กค๋ง_์˜ˆ์ œ์ฝ”๋“œ

import requests
from bs4 import BeautifulSoup

# ์‹ค์ œ ์‚ฌ๋žŒ์ธ ๊ฒƒ ์ฒ˜๋Ÿผ ํ•ด์ฃผ๋ ค๊ณ  (๋งˆ์น˜, ๋ธŒ๋ผ์šฐ์ €์—์„œ call ์„ ๋‚ ๋ฆฌ๋Š” ๊ฒƒ ์ฒ˜๋Ÿผ ํ•ด์ฃผ๋ ค๊ณ , ์‚ฌ๋žŒ์ธ ๊ฒƒ ์ฒ˜๋Ÿผ ํ•ด์ฃผ๋ ค๊ณ )
headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'}

# ํ•ด๋‹น url ์—์„œ html ์„ ๋ฐ›์•„์˜จ๋‹ค. (โœ… url ๋ณ€๊ฒฝํ•ด์„œ ์‚ฌ์šฉ)
data = requests.get('https://movie.naver.com/movie/sdb/rank/rmovie.naver?sel=pnt&date=20210829',headers=headers)

# html์—์„œ ์›ํ•˜๋Š” ๋ถ€๋ถ„์„ ์†Ž์•„๋‚ด๊ธฐ ์œ„ํ•ด ์šฐ์„  '์ „์ฒด๋ฅผ ๋‹ด์•„์˜จ๋‹ค.' 
soup = BeautifulSoup(data.text, 'html.parser')

# ์ด์ œ ๋ถ€ํ„ฐ ๋‚˜์˜ค๋Š” ๋ฌธ๋ฒ•์€ beaurifulsoup ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ž์ฒด์˜ ๋ฌธ๋ฒ•(syntax)
# ๋‹ด์•„ ์˜จ ๊ฒƒ ์ค‘ copy selector ๋ฅผ ์ด์šฉํ•ด์„œ ์†Ž์•„๋‚ธ๋‹ค. 
    # ๊ฒฐ๊ณผ๋ฌผ์€ a ํƒœ๊ทธ ์™€ ํ…์ŠคํŠธ๋กœ ๋‚˜์˜จ๋‹ค. 
title = soup.select_one('#old_content > table > tbody > tr:nth-child(2) > td.title > div > a')

print(title)
print(title.text)
print(title['href']) 

  • print(title) ๊ฒฐ๊ณผ๋ฌผ
    >>> print(title)
    <a href="/movie/bi/mi/basic.naver?code=186114" title="๋ฐฅ์ •">๋ฐฅ์ •</a>
  • ๋Š๋‚€์ 
    • ์—ฌ๊ธฐ์„œ ๋ง๋”ํ•˜๊ฒŒ ๋‚˜์˜ค๋Š”๊ฑด ์•„๋‹ˆ๊ตฌ๋‚˜,
    • ์ฆ‰, ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ๊ฑด, '๋ฐฅ์ •' ๊ธ€์”จ ์ธ๋ฐ, ==ํ•œ ๋ฒˆ์— ๋‚˜์˜ค๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ, a ํƒœ๊ทธ๋ž‘ ์„ž์—ฌ์„œ ๋‚˜์˜ค๊ฒŒ ๋œ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ์ž˜ ์†Ž์•„ ๋‚ด์ค˜์•ผ ํ•œ๋‹ค. ==

  • print(title.text) ๊ฒฐ๊ณผ๋ฌผ
    >>> print(title.text)
    ๋ฐฅ์ •

  • print(title['href']) ๊ฒฐ๊ณผ๋ฌผ
    >>> print(title['href'])
    /movie/bi/mi/basic.naver?code=186114


5) soup.select ์™€ ==์—ฌ๋Ÿฌ๊ฐœ์˜== copy selector ๋ฅผ ์ด์šฉํ•ด์„œ html ๋ฉ์–ด๋ฆฌ์— ์ค‘ ์›ํ•˜๋Š” ๋ถ€๋ถ„์„ ์ถ”๋ฆฌ๊ธฐ


a) ์–ด๋””๊นŒ์ง€ ๋˜‘๊ฐ™์€์ง€ ํ™•์ธ
  • ๋„ค์ด๋ฒ„ ์˜ํ™”์˜ ๊ฒฝ์šฐ, old_content > table > tbody > tr ๊นŒ์ง€๋Š” ๋™์ผ

b) ๊ทธ๊ฑธ select ์— ๋„ฃ๊ณ  ์‹คํ–‰ํ•˜๋ฉด?

#python_beaufifulsoup_ํฌ๋กค๋ง_์˜ˆ์ œ์ฝ”๋“œ

import requests
from bs4 import BeautifulSoup

# ์‹ค์ œ ์‚ฌ๋žŒ์ธ ๊ฒƒ ์ฒ˜๋Ÿผ ํ•ด์ฃผ๋ ค๊ณ  (๋งˆ์น˜, ๋ธŒ๋ผ์šฐ์ €์—์„œ call ์„ ๋‚ ๋ฆฌ๋Š” ๊ฒƒ ์ฒ˜๋Ÿผ ํ•ด์ฃผ๋ ค๊ณ , ์‚ฌ๋žŒ์ธ ๊ฒƒ ์ฒ˜๋Ÿผ ํ•ด์ฃผ๋ ค๊ณ )
headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'}

# ํ•ด๋‹น url ์—์„œ html ์„ ๋ฐ›์•„์˜จ๋‹ค. (โœ… url ๋ณ€๊ฒฝํ•ด์„œ ์‚ฌ์šฉ)
data = requests.get('https://movie.naver.com/movie/sdb/rank/rmovie.naver?sel=pnt&date=20210829',headers=headers)

# html์—์„œ ์›ํ•˜๋Š” ๋ถ€๋ถ„์„ ์†Ž์•„๋‚ด๊ธฐ ์œ„ํ•ด ์šฐ์„  '์ „์ฒด๋ฅผ ๋‹ด์•„์˜จ๋‹ค.' 
soup = BeautifulSoup(data.text, 'html.parser')

# ์ด์ œ ๋ถ€ํ„ฐ ๋‚˜์˜ค๋Š” ๋ฌธ๋ฒ•์€ beaurifulsoup ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ž์ฒด์˜ ๋ฌธ๋ฒ•(syntax)
# ๋‹ด์•„ ์˜จ ๊ฒƒ ์ค‘ copy selector ๋ฅผ ์ด์šฉํ•ด์„œ ์†Ž์•„๋‚ธ๋‹ค. 
    # ๊ฒฐ๊ณผ๋ฌผ์€ a ํƒœ๊ทธ ์™€ ํ…์ŠคํŠธ๋กœ ๋‚˜์˜จ๋‹ค. 
title = soup.select_one('#old_content > table > tbody > tr:nth-child(2) > td.title > div > a')
  • ์‹คํ–‰ํ•˜๋ฉด, ์ด๋ ‡๊ฒŒ ๋ฌด์‹œ๋ฌด์‹œ ํ•˜๊ฒŒ ์ฐํž˜ โญโญโญโญโญโญ

๐Ÿ‘‰ ์ด๊ฒŒ ์˜๋ฏธํ•˜๋Š” ๊ฑด? ์ข€ ๋” ํ™•์ธํ•ด๋ณด์ž.


c) copy selector ์™€ ๊ฒ€์‚ฌ๋ฅผ ๋ˆŒ๋Ÿฌ์„œ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๊ฑธ ๋น„๊ตํ•˜๋ฉด, ํžŒํŠธ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Œ.
  • copy selector ํ•œ ๋ถ€๋ถ„
    #old_content > table > tbody > tr:nth-child(2) > td.title > div > a

  • select ํ•จ์ˆ˜์— ๋„ฃ์€ ๋ถ€๋ถ„
    movies = soup.select('#old_content > table > tbody > tr')


  • ๊ฒ€์‚ฌ ๋ˆŒ๋Ÿฌ์„œ ๋‚˜์˜จ ๊ฒฐ๊ณผ
    tr ๊นŒ์ง€๋งŒ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ „์ฒด๊ฐ€ ๋‚˜์˜ค๊ฒŒ ๋˜์—ˆ์Œ.
    ์ด๋•Œ, ์ „์ฒด๊ฐ€ '๋ฆฌ์ŠคํŠธ' ์— ๋‹ด๊ฒจ ๋‚˜์˜ค๊ฒŒ ๋จ.
    ๊ทธ๋ž˜์„œ ๋ฌด์‹œ๋ฌด์‹œ ํ•œ๊ฑฐ ์˜€์Œ.

  • ๊ทธ๋Ÿฌ๋ฉด, ์ด๊ฑธ ์–ด์งธ?
    • ๋ฆฌ์ŠคํŠธ๋กœ ๋‹ด๊ฒจ ์™”์œผ๋‹ˆ๊นŒ for ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ ํŠน์ • ๊ฐ’์— ์ ‘๊ทผํ•˜๊ณ  -> ๊ทธ ๊ฐ’์˜ ๊ตฌ์กฐ๋ฅผ ์ด์šฉํ•ด์„œ ์›ํ•˜๋Š” ์ œ๋ชฉ ๊นŒ์ง€ ๊ฐˆ ์ˆ˜ ์žˆ์„ ๊ฒƒ

d) ๊ฒฐ๊ณผ์ ์œผ๋กœ, 1) ๊ณตํ†ต ๋ถ€๋ถ„ ๊นŒ์ง€๋ฅผ ์ถ”์ถœ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์—, ์ „์ฒด๊ฐ€ ๋‚˜์˜ค๊ฒŒ ๋˜๊ณ  2) ํ•ด๋‹น ๋ถ€๋ถ„์€ ๋ฆฌ์ŠคํŠธ์— ๋‹ด๊ฒจ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— 3) ๋ฆฌ์ŠคํŠธ + ๋ฐ˜๋ณต๋ฌธ์„ ํ†ตํ•ด ์›ํ•˜๋Š” ๊ฐ’์œผ๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Œ.
  • ๋ฆฌ์ŠคํŠธ + ๋ฐ˜๋ณต๋ฌธ์ด ์ž‘๋™ํ•˜๋Š” ์ฝ”๋“œ #python_beaufifulsoup_ํฌ๋กค๋ง_์˜ˆ์ œ์ฝ”๋“œ
    import requests
    from bs4 import BeautifulSoup
    

์‹ค์ œ ์‚ฌ๋žŒ์ธ ๊ฒƒ ์ฒ˜๋Ÿผ ํ•ด์ฃผ๋ ค๊ณ  (๋งˆ์น˜, ๋ธŒ๋ผ์šฐ์ €์—์„œ call ์„ ๋‚ ๋ฆฌ๋Š” ๊ฒƒ ์ฒ˜๋Ÿผ ํ•ด์ฃผ๋ ค๊ณ , ์‚ฌ๋žŒ์ธ ๊ฒƒ ์ฒ˜๋Ÿผ ํ•ด์ฃผ๋ ค๊ณ )

headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'}

ํ•ด๋‹น url ์—์„œ html ์„ ๋ฐ›์•„์˜จ๋‹ค. (โœ… url ๋ณ€๊ฒฝํ•ด์„œ ์‚ฌ์šฉ)

data = requests.get('https://movie.naver.com/movie/sdb/rank/rmovie.naver?sel=pnt&date=20210829',headers=headers)

html์—์„œ ์›ํ•˜๋Š” ๋ถ€๋ถ„์„ ์†Ž์•„๋‚ด๊ธฐ ์œ„ํ•ด ์šฐ์„  '์ „์ฒด๋ฅผ ๋‹ด์•„์˜จ๋‹ค.'

soup = BeautifulSoup(data.text, 'html.parser')

๋ณต์ˆ˜๊ฐœ์˜ copy selector ๋ฅผ ํ™œ์šฉํ•˜๊ณ  ์‹ถ์Œ.

'๋ฐฅ์ •' ๊ณผ '๊ทธ๋ฆฐ ๋ถ' copy selector ๋ฅผ ์ฐ์–ด๋ด„

#old_content > table > tbody > tr:nth-child(2) > td.title > div > a
#old_content > table > tbody > tr:nth-child(3) > td.title > div > a

๊ณตํ†ต๋˜๋Š” ๋ถ€๋ถ„์„ select ํ•จ์ˆ˜์— ๋„ฃ๊ธฐ

movies = soup.select('#old_content > table > tbody > tr')

for movie in movies:
a = movie.select_one('td.title > div > a')
print(a)


<br>

- ๊ณผ์ • ์„ค๋ช… 
![](https://i.imgur.com/7Q4RxEo.png)

<br>

- ๊ฒฐ๊ณผ๋ฌผ ![](https://i.imgur.com/FeEKrx0.png)

<br>

##### e) ๋ฐ‘์ค„(none) ์—†์• ๊ณ  ์ œ๋ชฉ ๋ฝ‘๊ธฐ 

- ๋ฐ‘์ค„ ์˜ ํ”์  
![](https://i.imgur.com/0QHrY8m.png)
![](https://i.imgur.com/PGR8kcW.png)


- ์ž‘๋™ํ•˜๋Š” ์ฝ”๋“œ #python_beaufifulsoup_ํฌ๋กค๋ง_์˜ˆ์ œ์ฝ”๋“œ 
``` python 
import requests
from bs4 import BeautifulSoup

# ์‹ค์ œ ์‚ฌ๋žŒ์ธ ๊ฒƒ ์ฒ˜๋Ÿผ ํ•ด์ฃผ๋ ค๊ณ  (๋งˆ์น˜, ๋ธŒ๋ผ์šฐ์ €์—์„œ call ์„ ๋‚ ๋ฆฌ๋Š” ๊ฒƒ ์ฒ˜๋Ÿผ ํ•ด์ฃผ๋ ค๊ณ , ์‚ฌ๋žŒ์ธ ๊ฒƒ ์ฒ˜๋Ÿผ ํ•ด์ฃผ๋ ค๊ณ )
headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'}

# ํ•ด๋‹น url ์—์„œ html ์„ ๋ฐ›์•„์˜จ๋‹ค. (โœ… url ๋ณ€๊ฒฝํ•ด์„œ ์‚ฌ์šฉ)
data = requests.get('https://movie.naver.com/movie/sdb/rank/rmovie.naver?sel=pnt&date=20210829',headers=headers)

# html์—์„œ ์›ํ•˜๋Š” ๋ถ€๋ถ„์„ ์†Ž์•„๋‚ด๊ธฐ ์œ„ํ•ด ์šฐ์„  '์ „์ฒด๋ฅผ ๋‹ด์•„์˜จ๋‹ค.' 
soup = BeautifulSoup(data.text, 'html.parser')


# ๋ณต์ˆ˜๊ฐœ์˜ copy selector ๋ฅผ ํ™œ์šฉํ•˜๊ณ  ์‹ถ์Œ. 
# '๋ฐฅ์ •' ๊ณผ '๊ทธ๋ฆฐ ๋ถ' copy selector ๋ฅผ ์ฐ์–ด๋ด„
#old_content > table > tbody > tr:nth-child(2) > td.title > div > a
#old_content > table > tbody > tr:nth-child(3) > td.title > div > a
# ๊ณตํ†ต๋˜๋Š” ๋ถ€๋ถ„์„ select ํ•จ์ˆ˜์— ๋„ฃ๊ธฐ 

movies = soup.select('#old_content > table > tbody > tr')

for movie in movies:
    a = movie.select_one('td.title > div > a')
    if a != None:   # if a is not None ({๋™์ผ})
        print(a.text)
  • ๊ฒฐ๊ณผ๋ฌผ



๐Ÿ’ญ What i learned


  • ํฌ๋กค๋ง์—์„œ ํ•„์š”ํ•œ ๊ณผ์ • 1) ํ•ด๋‹น url ์—์„œ html ๊ฐ€์ ธ์˜ค๊ธฐ 2) ๊ฐ€์ ธ์˜จ html ์—์„œ ํ•„์š”ํ•œ ๋ถ€๋ถ„ ๋ฝ‘์•„๋‚ด๊ธฐ ๊ตฌ๋‚˜!!! โญโญโญ ์ด๋ ‡๊ฒŒ ๋‹จ๊ณ„ํ™” ํ•  ์ˆ˜ ์žˆ๊ฒ ๋„ค.
  • select ๋ฅผ ์“ด๋‹ค๊ณ  ํ•ด์„œ ==ํ•œ ๋ฒˆ์— ๋‚˜์˜ค๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ, a ํƒœ๊ทธ๋ž‘ ์„ž์—ฌ์„œ ๋‚˜์˜ค๊ฒŒ ๋œ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ์ž˜ ์†Ž์•„ ๋‚ด์ค˜์•ผ ํ•œ๋‹ค. ==
728x90
๋ฐ˜์‘ํ˜•

Comments