3-7_์›น์Šคํฌ๋ž˜ํ•‘(ํฌ๋กค๋ง) ๊ธฐ์ดˆ (feat. ๋„ค์ด๋ฒ„ ์˜ํ™” ํ‰์  ์‚ฌ์ดํŠธ ํฌ๋กค๋ง, beautifulsoup, select_one, select)

2023. 1. 30. 16:58ยท[WEB & AI]/ํ”„๋ก ํŠธ&๋ฐฑ์—”๋“œ
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

โ“ ์ด ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ์™œ ํ•ด์•ผ ํ•˜๋Š” ๊ฑฐ์ง€? ์•„์ง ์ž˜ ๋ชจ๋ฅด๊ฒ ์Œ


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

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

  1. ๋ฝ‘๊ณ  ์‹ถ์€ ๊ฒƒ > ์šฐํด๋ฆญ > ๊ฒ€์‚ฌ
  2. 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 ์— ๋„ฃ๊ณ  ์‹คํ–‰ํ•˜๋ฉด?
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) ๋ฆฌ์ŠคํŠธ + ๋ฐ˜๋ณต๋ฌธ์„ ํ†ตํ•ด ์›ํ•˜๋Š” ๊ฐ’์œผ๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Œ.
  • ๋ฆฌ์ŠคํŠธ + ๋ฐ˜๋ณต๋ฌธ์ด ์ž‘๋™ํ•˜๋Š” ์ฝ”๋“œ
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)

  • ๊ณผ์ • ์„ค๋ช…

  • ๊ฒฐ๊ณผ๋ฌผ

e) ๋ฐ‘์ค„(none) ์—†์• ๊ณ  ์ œ๋ชฉ ๋ฝ‘๊ธฐ
  • ๋ฐ‘์ค„ ์˜ ํ”์ 
  • ์ž‘๋™ํ•˜๋Š” ์ฝ”๋“œ
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
๋ฐ˜์‘ํ˜•
์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋ณ€๊ฒฝ๊ธˆ์ง€ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'[WEB & AI] > ํ”„๋ก ํŠธ&๋ฐฑ์—”๋“œ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

5-7_๋‚ด ํ”„๋กœ์ ํŠธ๋ฅผ ์„œ๋ฒ„์— ์˜ฌ๋ฆฌ๊ธฐ (feat. ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์ด ํ•„์š”ํ•œ ์ด์œ , AWS, ๋‚ด ํ”„๋กœ์ ํŠธ๋ฅผ ์„œ๋ฒ„์— ์˜ฌ๋ ค๋ณด๊ธฐ)  (4) 2023.02.08
3-6_requests ํŒจํ‚ค์ง€ ์‚ฌ์šฉํ•ด๋ณด๊ธฐ (feat. ๋ฏธ์„ธ๋จผ์ง€ api, terminal ์—์„œ venv๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ณณ ์„ค์ •์˜ ์ค‘์š”์„ฑ)  (0) 2023.01.30
3-5_ํŒŒ์ด์ฌ ํŒจํ‚ค์ง€ ์„ค์น˜ํ•˜๊ธฐ (feat. ๊ฐ€์ƒํ™˜๊ฒฝ์ด๋ž€? venv ๊ฐœ๋…)  (0) 2023.01.29
3-4_ํŒŒ์ด์ฌ ์‹œ์ž‘ํ•˜๊ธฐ 1 (feat. ๋ณ€์ˆ˜, ์กฐ๊ฑด๋ฌธ, ๋ฐ˜๋ณต๋ฌธ, ํ•จ์ˆ˜, ๋”•์…”๋„ˆ๋ฆฌ, ํŒŒ์ด์ฌ ๊ธฐ์ดˆ ๋ฌธ๋ฒ•)  (0) 2023.01.29
3-3_ํŒŒ์ด์ฌ ์‹œ์ž‘ํ•˜๊ธฐ (feat. ํŒŒ์ด์ฐธ ์„ค์น˜, ๊ฐ€์ƒํ™˜๊ฒฝ ์„ค์น˜, ๋น„์ฅฌ์–ผ ์ŠคํŠœ๋””์˜ค ์ฝ”๋“œ)  (0) 2023.01.29
'[WEB & AI]/ํ”„๋ก ํŠธ&๋ฐฑ์—”๋“œ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • 5-7_๋‚ด ํ”„๋กœ์ ํŠธ๋ฅผ ์„œ๋ฒ„์— ์˜ฌ๋ฆฌ๊ธฐ (feat. ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์ด ํ•„์š”ํ•œ ์ด์œ , AWS, ๋‚ด ํ”„๋กœ์ ํŠธ๋ฅผ ์„œ๋ฒ„์— ์˜ฌ๋ ค๋ณด๊ธฐ)
  • 3-6_requests ํŒจํ‚ค์ง€ ์‚ฌ์šฉํ•ด๋ณด๊ธฐ (feat. ๋ฏธ์„ธ๋จผ์ง€ api, terminal ์—์„œ venv๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ณณ ์„ค์ •์˜ ์ค‘์š”์„ฑ)
  • 3-5_ํŒŒ์ด์ฌ ํŒจํ‚ค์ง€ ์„ค์น˜ํ•˜๊ธฐ (feat. ๊ฐ€์ƒํ™˜๊ฒฝ์ด๋ž€? venv ๊ฐœ๋…)
  • 3-4_ํŒŒ์ด์ฌ ์‹œ์ž‘ํ•˜๊ธฐ 1 (feat. ๋ณ€์ˆ˜, ์กฐ๊ฑด๋ฌธ, ๋ฐ˜๋ณต๋ฌธ, ํ•จ์ˆ˜, ๋”•์…”๋„ˆ๋ฆฌ, ํŒŒ์ด์ฌ ๊ธฐ์ดˆ ๋ฌธ๋ฒ•)
๋ถ€์‹œ๋งค๋‚˜_HA
๋ถ€์‹œ๋งค๋‚˜_HA
๐ŸŒ„ ๋งˆ์Œ์ฑ™๊น€ | ๐Ÿฆพ ์—ฐ์Šต | ๐Ÿฑ‍๐Ÿ Creator | ๐Ÿ“š[stackList] Nodejs, React, Three.js, Javascript, Blockchain, Blender, Unreal, Unity, Python, AI prompting
    ๋ฐ˜์‘ํ˜•
    250x250
  • ๋ถ€์‹œ๋งค๋‚˜_HA
    Hello creators ๐Ÿ™Œ
    ๋ถ€์‹œ๋งค๋‚˜_HA
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (221)
      • [ํ”„๋ก ํŠธ์—”๋“œ(FE) ๊ฐœ๋ฐœ] (feat. ์ฃผ๋‹ˆ์–ด) (8)
        • TIL (4)
        • React Hook Form (2)
        • Git (Github, Gitlab) (1)
      • [WEB & AI] (75)
        • Next YTMusic ํด๋ก  ์ฝ”๋”ฉ (with ne.. (0)
        • ํ”„๋ก ํŠธ&๋ฐฑ์—”๋“œ (15)
        • ์ฝ”๋”ฉ์• ํ”Œ (1)
        • JavaScript (0)
        • ์ŠคํŒŒ๋ฅดํƒ€์ฝ”๋”ฉํด๋Ÿฝ_์›น๊ฐœ๋ฐœ์ข…ํ•ฉ๋ฐ˜ (44)
        • ๋ธ”๋ก์ฒด์ธ ๊ฐœ๋ฐœ์ž ๊ณผ์ •_KGA (7)
        • ์•Œ๊ณ ๋ฆฌ์ฆ˜&์ž๋ฃŒ๊ตฌ์กฐ (1)
        • [AI] (0)
        • AI_Art (0)
        • Python (6)
        • [ํšŒ๊ณ ] (1)
      • [3D & 2D ๊ทธ๋ž˜ํ”ฝ์Šค] (133)
        • 2D ์ด๋ฏธ์ง€ (0)
        • ์†๋งต (4)
        • ๋””์ง€ํ„ธ ํŽ˜์ธํŒ… (8)
        • ๋…ธ๋ง๋งต (17)
        • ์–ธ๋ฆฌ์–ผ_์ž…๋ฌธ (43)
        • ์–ธ๋ฆฌ์–ผ_์ค‘๊ธ‰ (12)
        • ์–ธ๋ฆฌ์–ผ_PBL (1)
        • ์”จํฌ๋””, C4D (2)
        • ์„ญ์Šคํ„ด์Šค (18)
        • ๋งฅ์Šค, 3ds Max (19)
        • World Machine (1)
        • ์ง€๋ธŒ๋Ÿฌ์‰ฌ, Zbrush (6)
        • 3D Coat (2)
        • Unity (0)
      • [๊ธฐํƒ€] (3)
        • [E-Book ์ œ์ž‘] (0)
        • ์ธ๋””์ž์ธ(Indesign) (1)
        • [์ค€๋น„๊ณผ์ •] (1)
      • [์ผ์ƒ] (0)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    ๋ฉ”ํƒ€๋ฒ„์Šค ํฌ๋ฆฌ์—์ดํ„ฐ ๊ฐ•์ขŒ
    ๊ฐœ๋ฐœ ์ผ์ง€
    ์–ธ๋ฆฌ์–ผ 4
    css
    ์–ธ๋ฆฌ์–ผ ๊ฐ•์ขŒ
    3d ๋งฅ์Šค ์ž…๋ฌธ ๊ฐ•์˜
    ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ
    JavaScript
    ๋ฉ”ํƒ€๋ฒ„์Šค ๋ฐฐ๊ฒฝ ์ž…๋ฌธ
    ๊ฐœ๋ฐœ์ž ๊ธฐ์ดˆ ๊ฐ•์˜ ์ถ”์ฒœ
    ์›น๊ฐœ๋ฐœ์ข…ํ•ฉ๋ฐ˜ ํ›„๊ธฐ
    ๊ฐœ๋ฐœ ๊ฐ•์˜ ์ถ”์ฒœ
    3D ๋ชจ๋ธ๋ง ์ž…๋ฌธ
    3d ๋ฐฐ๊ฒฝ ๋””์ž์ธ ์ž…๋ฌธ
    ๊ฐœ๋ฐœ ํšŒ๊ณ 
    ์ˆ˜์—… ๋ฆฌ๋ทฐ
    3ds Max ๊ฐ•์ขŒ
    3ds Max ์ž…๋ฌธ
    ๋ฉ”ํƒ€๋ฒ„์Šค ํฌ๋ฆฌ์—์ดํ„ฐ ์ž…๋ฌธ
    3d ๋ฐฐ๊ฒฝ ๋””์ž์ธ ๊ฐ•์ขŒ
    ๊ฐœ๋ฐœ์ž ๊ฐ•์˜ ์ถ”์ฒœ
    ์›น ๊ฐœ๋ฐœ ๊ฐ•์˜
    ์›น๊ฐœ๋ฐœ์ข…ํ•ฉ๋ฐ˜
    ๊ฐœ๋ฐœ์ž ์ปค๋ฆฌํ˜๋Ÿผ
    ์ŠคํŒŒ๋ฅดํƒ€์ฝ”๋”ฉํด๋Ÿฝ
    ๋ฉ”ํƒ€๋ฒ„์Šค ๋ฐฐ๊ฒฝ ๊ฐ•์ขŒ
    ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ธฐ์ดˆ
    ๋ฐฐ๊ฒฝ ๋ชจ๋ธ๋ง ๊ฐ•์˜
    ์›น ๊ฐœ๋ฐœ ๊ธฐ์ดˆ
    3D ๋ชจ๋ธ๋ง ๊ฐ•์˜
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
๋ถ€์‹œ๋งค๋‚˜_HA
3-7_์›น์Šคํฌ๋ž˜ํ•‘(ํฌ๋กค๋ง) ๊ธฐ์ดˆ (feat. ๋„ค์ด๋ฒ„ ์˜ํ™” ํ‰์  ์‚ฌ์ดํŠธ ํฌ๋กค๋ง, beautifulsoup, select_one, select)
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”