์ŠคํŒŒ๋ฅดํƒ€ ๋‚ด์ผ๋ฐฐ์›€์บ ํ”„(25.12.01~)

์ŠคํŒŒ๋ฅดํƒ€ ๋‚ด์ผ๋ฐฐ์›€์บ ํ”„_๋ณธ์บ ํ”„_data11๊ธฐ ๊น€์„ ์˜_TIL_Day 73

0๏ธโƒฃ 2026. 4. 7. 21:30

[์˜ค๋Š˜์˜ ํ•™์Šต]

  • streamlit ๋ณต์Šต
  • API๋ฅผ ์ด์šฉํ•œ ํฌ๋กค๋ง ๋…น๊ฐ• ๋“ฃ๊ธฐ
  • ๋ผ๋–ผํ†ก ๋ฏธ๋‹ˆ์„ธ์…˜
  • ํ”„๋กœ์ ํŠธ ๋ฐœ์ œ ์ „ ์ฑ„์šฉ๊ณต๊ณ  ์ฐพ์•„๋ณด๊ธฐ

[ํ•™์Šต๋‚ด์šฉ ์ •๋ฆฌ]

API๋ฅผ ์ด์šฉํ•œ ํฌ๋กค๋ง ๋…น๊ฐ• ๋“ฃ๊ธฐ

import requests
from pprint import pprint # json์„ ๋ณด๊ธฐ ์ข‹์€ ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜ํ•ด์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

# ๊ฒ€์ƒ‰์–ด ์„ค์ •
search_query = "๋ฐ์ดํ„ฐ ๋ถ„์„"

# API ์š”์ฒญ URL
service_url = 'https://openapi.naver.com/v1/search/blog.json'

# API ์š”์ฒญ ํ—ค๋” ์„ค์ •
headers = {
    'X-Naver-Client-Id' : client_id,
    'X-Naver-Client-Secret' : client_secret
}

# API ์š”์ฒญ ํŒŒ๋ผ๋ฏธํ„ฐ
params = {
    'query' : search_query,
    'display' : 10,
    'start' : 1,
    'sort' : 'sim'
}

# HTTP GET ์š”์ฒญํ•˜๊ธฐ
response = requests.get(
    service_url,
    headers = headers,
    params = params
)

# API ๊ฒฐ๊ณผ ํ™•์ธ
# ์‘๋‹ต์ฝ”๋“œ (200) => ์„ฑ๊ณต์ 
print(response.status_code) 

blog_results = [] # pprint๋กœ ๋ถˆ๋Ÿฌ์˜จ ์ •๋ณด ์ค‘ ํ•„์š”ํ•œ ๊ฒƒ๋งŒ ๋ชจ์œผ๊ธฐ ์œ„ํ•จ
if response.status_code == 200:
    result = response.json() # json ํ˜•ํƒœ์˜ ์‘๋‹ต ํ…์ŠคํŠธ ๊ฒฐ๊ณผ๋ฅผ ๋”•์…”๋„ˆ๋ฆฌ๋กœ ๋ณ€ํ™˜
    print("========== ํฌ๋กค๋ง ์ถœ๋ ฅ ==========")
    pprint(result)

    # pprint๋กœ ๋ถˆ๋Ÿฌ์˜จ ์ •๋ณด ์ค‘ ํ•„์š”ํ•œ ๊ฒƒ๋งŒ ๋ชจ์œผ๊ธฐ ์œ„ํ•จ
    for item in result['items']:
        blog = {
            'title' : item['title'],
            'link' : item['link'],
            'description' : item['description'],
            'postdate' : item['postdate'],
        }
        blog_results.append(blog)
        print(blog_results)
print('ํ•„์š”ํ•œ ๊ฒƒ๋งŒ ์ถœ๋ ฅํ•œ ๊ฒƒ ๊ฐœ์ˆ˜: ', len(blog_results))

 

  • ํฌ๋กค๋งํ•œ ์ด๋ฏธ์ง€ ๋‹ค์šด๋กœ๋“œ ๋ฐ›๊ธฐ (์ง์ ‘ ํ•ด๋ณด๊ธฐ)
    • image_url = image_results[n]['thumbnail']
      list์ธ image_results์—์„œ url ํ•˜๋‚˜์”ฉ ๊ฐ€์ ธ์™€์„œ ๋‹ค์šด๋กœ๋“œ ๋ฐ›๊ธฐ.
      โš ๏ธ image_results๊ฐ€ list์—ฌ์„œ ์ธ๋ฑ์Šค๋กœ ๋ฐ”๋กœ ์ ‘๊ทผํ•ด์•ผ ํ•จ. dtype ํ™•์ธ ํ•„์š”ํ–ˆ์Œ.
      โš ๏ธ ๋ณ„๋„ ๋ฆฌ์ŠคํŠธ์— ๋‹ด์ง€ ์•Š์•„๋„ url ํ•˜๋‚˜์”ฉ ์ฒ˜๋ฆฌํ•˜๋ฉด ๋˜๋‹ˆ๊นŒ, ํฌ๋กค๋ง ์ฝ”๋“œ์—์„œ blog_results=[] ์ฒ˜๋Ÿผ ๋ณ„๋„ ๋ฆฌ์ŠคํŠธ ๋งŒ๋“ค์ง€ ์•Š์•„๋„ ๋จ.
for n in range(10) :
    image_url = image_results[n]['thumbnail']
    response = requests.get(image_url)
    # print(response)

    if response.status_code == 200 :
        with open(f"downloaded_img/downloaded_image_{n}.jpg", "wb") as f:
            f.write(response.content)
        print("์ด๋ฏธ์ง€ ๋‹ค์šด๋กœ๋“œ ์™„๋ฃŒ!")
    else :
        print(f"๋‹ค์šด๋กœ๋“œ ์‹คํŒจ. ์ƒํƒœ์ฝ”๋“œ {response.status_code}")

์‹ค์ „ํ”„๋กœ์ ํŠธ(4์ฐจ ํ”„๋กœ์ ํŠธ) ์ „ DA ์ฑ„์šฉ๊ณต๊ณ  ์ฐพ์•„๋ณด๊ธฐ

  • ์ปฌ๋ฆฌ(https://zighang.com/recruitment/cae952e1-ad2e-4b62-ae5e-5f197856639c)
    - sql, ํƒœ๋ธ”๋กœ, python
    - git, Airflow
  • ํ† ์Šค์ฆ๊ถŒ(https://zighang.com/recruitment/fd3e241b-a415-456d-863d-61bc8684a91a)
    - ์ „์‚ฌ๋ชฉํ‘œ ์ˆ˜๋ฆฝํ•˜๊ณ  ์ถ”์ ํ•˜๋Š” ์—ญ๋Ÿ‰ - ํƒœ์Šคํฌ ๊ด€๋ฆฌ, ์—…๋ฌด ์šฐ์„ ์ˆœ์œ„ ๊ด€๋ฆฌ
    - sql, python
    - A/B test, ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜
    - ์‹œ๊ฐํ™” ํˆด(ํƒœ๋ธ”๋กœ)
  • ์šฐ์•„ํ•œ ํ˜•์ œ๋“ค(https://zighang.com/recruitment/0fcdcaeb-182f-45c4-bb80-515fdcc47e1d)
    - sql
    - kpi ์„ฑ๊ณผ ์ถ”์ 
    - ์œ ๊ด€๋ถ€์„œ์™€์˜ ํ˜‘์—…
    - Redash, Tableau(์šฐ๋Œ€์‚ฌํ•ญ), Google Spreadsheet, Airflow ๋“ฑ์„ ํ™œ์šฉํ•œ ๋Œ€์‹œ๋ณด๋“œ ๊ตฌ์„ฑ/์ž๋™ํ™” ๊ฒฝํ—˜์ด ์žˆ๋Š” ๋ถ„
    - LTV, Cohort, ํผ๋„ ๋ถ„์„, A/B ํ…Œ์ŠคํŠธ ๋“ฑ ๊ณ ๋„ํ™”๋œ ๋ถ„์„ ๊ธฐ๋ฒ• ๊ฒฝํ—˜
  • ๋ฌด์‹ ์‚ฌ(https://zighang.com/recruitment/12d5dcde-f87f-4e14-890e-726ccc656ef0)
    - SQL
    - KPI ์ •์˜ ๋ฐ ๋ฐ์ดํ„ฐ ๊ธฐ๋ฐ˜ ์„ฑ๊ณผ ๋ถ„์„/ํ•ด์„ ๊ฒฝํ—˜
    - Tableau, Power BI ๋“ฑ ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™” ๋„๊ตฌ ํ™œ์šฉ ๊ฒฝํ—˜

<์ฑ„์šฉ๊ณต๊ณ  ์š”๊ตฌ ์ฃผ์š”์—ญ๋Ÿ‰>

  • ํ˜‘์—… + ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ + ์—…๋ฌด๊ด€๋ฆฌ
    - ์—‘์…€(์ผ์ •๊ด€๋ฆฌ, ์ด์Šˆ๊ด€๋ฆฌ, ๋ฐ์ดํ„ฐ์ •์˜, ์ „์ฒ˜๋ฆฌ ๋“ฑ)
    - git
    - Airflow
    - (๋ถ€) PPT ์ œ์ž‘ ์‹œ ์šฉ์–ด ์„ค๋ช… ์ถ”๊ฐ€
  • ๋Šฅ๋ ฅ
    - SQL
    - Python
    - ํƒœ๋ธ”๋กœ (streamlit ํ™•์žฅ?)
  • ๋ถ„์„ ๋ฐ ๊ฒ€์ฆ๋Šฅ๋ ฅ
    - LTV, Cohort, ํผ๋„ ๋ถ„์„, A/B ํ…Œ์ŠคํŠธ ๋“ฑ ๊ณ ๋„ํ™”๋œ ๋ถ„์„ ๊ธฐ๋ฒ• ๊ฒฝํ—˜
    - KPI ์ •์˜ ๋ฐ ๋ฐ์ดํ„ฐ ๊ธฐ๋ฐ˜ ์„ฑ๊ณผ ๋ถ„์„&ํ•ด์„

[๋‚ด์ผ์˜ ํ•™์Šต]

  • ์‹ค์ „ํ”„๋กœ์ ํŠธ ์‹œ์ž‘!
  • 10:00-11:00 ์ตœ์ข… ํ”„๋กœ์ ํŠธ ๋ฐœ์ œ
  • 19:00-21:00 ์ด์ปค๋จธ์Šค ๋„๋ฉ”์ธ์— ๋Œ€ํ•œ ์ดํ•ด 5ํšŒ์ฐจ