본문 바로가기
TIL

내배캠 TIL 15일차

by ColorConeHead 2024. 1. 9.
반응형

1. 알고리즘 특강

1) 자료구조

(1) 해시 테이블.

- Key와 Value로 이루어진 “사전형“ 자료형.
- Hash Table은 Python 에서 Dictionary 형으로 구현.

 

(2) 트리

- 머신러닝 혹은 분석방법론에서 의사결정나무(Tree) 개념이 등장.

 

(3) 그래프

- 데이터베이스에서의 다이어그램 같다.

 

 

 

 

 

2. 팀 프로젝트

1) 주제

(1) 한국 모바일 OTT 콘텐츠 장르 및 이용자 특성을 통한 마케팅 전략 선정.
     - 키즈 콘텐츠 특화.
     - EDA를 통해 특화할 요소를 찾아볼 것.

(2) 넷플릭스 사용자 로그 분석을 통한 서비스 개선 방향 제시.
     - EDA를 통해 특화할 요소를 찾아볼 것.

 

2) 개인 크롤링 코드

사용한 사이트가 최신 정보로 로딩 후에
페이로드를 받아서 검색해주는 방식이여서
크롤링이 잘 되지 않았다.

튜터님께서 주신 피드백대로
다른 사이트를 이용해서 크롤링해봐야겠다.
https://playit.tistory.com/2

다른 사람들이 안 쓰는 데에는 다 이유가 있는 법이야.
코드는 남기겠지만 이 사이트는 버리겠다.
혹시나 뭐가 문제인지 아시는 분은 훈수 부탁드립니다ㅠ

import requests
import datetime as dt
import re
import numpy as np
import pandas as pd
import time

total_platform = []
total_rank = []
total_name = []
total_weeks_in_top_10 = []
total_start_date = []
total_end_date = []

end = dt.date(2021,7,4)
add = dt.timedelta(days=7)
reduce = dt.timedelta(days=6)


while end < dt.date.today():

    url = f'https://www.netflix.com/tudum/top10/south-korea/tv?week={end}'
    time.sleep(3)
    response = requests.get(url)
    text = response.content.decode("utf-8")
    top_ten = re.findall(r'<tr data-id="[0-9]+">(.+?)</tr>', text, re.DOTALL)

    for content in top_ten:
        rank = re.findall(r'rank [pt\-2]*">(.+?)</td>', content, re.DOTALL)
        name = re.findall(r'name [pt\-2]*">(.+?)</td>', content, re.DOTALL)
        weeks_in_top_10 = re.findall(r'<span class="wk-number">(.+?)</span>', content, re.DOTALL)

        for i in range(len(rank)):
            total_platform.append('tv')
            total_rank.append(rank[i])
            total_name.append(name[i])
            total_weeks_in_top_10.append(weeks_in_top_10[i])
            total_start_date.append(str(end-reduce))
            total_end_date.append(str(end))


    end += add



end = dt.date(2021,7,4)


while end < dt.date.today():

    url = f'https://www.netflix.com/tudum/top10/south-korea?week={end}'
    time.sleep(3)
    response = requests.get(url)
    text = response.content.decode("utf-8")
    top_ten = re.findall(r'<tr data-id="[0-9]+">(.+?)</tr>', text, re.DOTALL)

    for content in top_ten:
        rank = re.findall(r'rank [pt\-2]*">(.+?)</td>', content, re.DOTALL)
        name = re.findall(r'name [pt\-2]*">(.+?)</td>', content, re.DOTALL)
        weeks_in_top_10 = re.findall(r'<span class="wk-number">(.+?)</span>', content, re.DOTALL)

        for i in range(len(rank)):
            total_platform.append('film')
            total_rank.append(rank[i])
            total_name.append(name[i])
            total_weeks_in_top_10.append(weeks_in_top_10[i])
            total_start_date.append(str(end-reduce))
            total_end_date.append(str(end))

    end += add

total_platform_v = np.array(total_platform).reshape(-1, 1)
total_rank_v = np.array(total_rank).reshape(-1, 1)
total_name_v = np.array(total_name).reshape(-1, 1)
total_weeks_in_top_10_v = np.array(total_weeks_in_top_10).reshape(-1, 1)
total_start_date_v = np.array(total_start_date).reshape(-1, 1)
total_end_date_v = np.array(total_end_date).reshape(-1, 1)

df = pd.DataFrame(index=range(len(total_platform_v)))

df['platform'] = total_platform_v
df['rank'] = total_rank_v
df['name'] = total_name_v
df['weeks_in_top_10'] = total_weeks_in_top_10_v
df['start_date'] = total_start_date_v
df['end_date'] = total_end_date_v


df.to_csv('result.csv')​
반응형

'TIL' 카테고리의 다른 글

내배캠 TIL 17일차  (1) 2024.01.11
내배캠 TIL 16일차  (1) 2024.01.10
내배캠 TIL 14일차  (0) 2024.01.08
내배캠 TIL 13일차  (0) 2024.01.05
내배캠 TIL 12일차  (2) 2024.01.04