이번에는 지난글에서 수집한 데이터들을
DB에서 사용할 형식(tpo,preference 값들)까지 자동화해서 설정하도록 코드를 만들었습니다.
지난 코드에서 저장한 pinterestcrowling.csv 파일을 다시 읽어서
Coordinate.csv파일에 각 컬럼별로 재배치된 데이터들을 저장하도록 했습니다.
밑에 코드대로 진행했습니다.
#csv파일에 있는 이미지를 기반으로, tpo/weather_condition/preference 만들기
import pandas as pd
import os
def categorize_image(search_term):
"""검색어를 기반으로 TPO, 날씨씨, 추구 컨셉을을 분류"""
# TPO 분류
tpo = 'daily' # 기본값
if 'resort' in search_term:
tpo = 'resort'
elif 'classy' in search_term or 'demure' in search_term:
tpo = 'wedding guest'
elif 'cute' in search_term:
tpo = 'date'
elif 'party' in search_term:
tpo = 'party'
elif 'work' in search_term:
tpo = 'office'
# 계절 분류
weather_condition = 'all' # 기본값
if 'summer' in search_term:
weather_condition = 'hot'
elif 'winter' in search_term:
weather_condition = 'cold'
elif 'spring' in search_term:
weather_condition = 'warm'
elif 'autumn' in search_term:
weather_condition = 'chill'
elif 'cold' in search_term:
weather_condition = 'cold wave'
elif 'summer umbrella' in search_term:
weather_condition = 'summer umbrella rainy'
elif 'winter umbrella' in search_term:
weather_condition = 'winter umbrella rainy'
elif 'spring umbrella' in search_term:
weather_condition = 'spring umbrella rainy'
elif 'authum umbrella' in search_term:
weather_condition = 'authum umbrella rainy'
# 스타일 선호도
preference = 'normal' # 기본값
if 'cute' in search_term:
preference = 'cute'
elif 'classy' in search_term:
preference = 'classy'
return {
'tpo': tpo,
'weather_condition': weather_condition,
'preference': preference
}
def update_csv_with_categories():
"""CSV 파일에 카테고리 정보 추가"""
# CSV 파일 경로
csv_file = 'pinterestcrowling.csv'
output_file = 'Coordinate.csv' # 결과를 저장할 파일 경로
if not os.path.exists(csv_file):
print(f"CSV 파일을 찾을 수 없습니다: {csv_file}")
return
try:
# CSV 파일 읽기
df = pd.read_csv(csv_file)
# 중복된 행 제거 및 인덱스 재설정
df = df.drop_duplicates().reset_index(drop=True)
# NaN 값 처리 (예: 빈 문자열로 대체)
df['search_term'] = df['search_term'].fillna('')
# 카테고리 컬럼이 없는 경우에만 추가
if 'tpo' not in df.columns:
# 검색어를 기반으로 카테고리 정보 추가
categories = df['search_term'].apply(categorize_image)
# 카테고리 정보를 개별 컬럼으로 분리
df['tpo'] = categories.apply(lambda x: x['tpo'])
df['weather_condition'] = categories.apply(lambda x: x['weather_condition'])
df['preference'] = categories.apply(lambda x: x['preference'])
# coordinate_id 추가 (1부터 시작하는 순차적 번호)
df['coordinate_id'] = range(1, len(df) + 1)
# image_url 컬럼을 coordinate_id와 tpo 사이에 추가
df = df[['coordinate_id', 'image_url', 'tpo', 'weather_condition', 'preference']]
# 업데이트된 데이터프레임을 Coordinate.csv 파일로 저장
df.to_csv(output_file, index=False, encoding='utf-8-sig')
print("카테고리 정보가 성공적으로 추가되어 Coordinate.csv에 저장되었습니다.")
else:
print("이미 카테고리 정보가 존재합니다.")
except Exception as e:
print(f"CSV 파일 처리 중 오류 발생: {e}")
if __name__ == "__main__":
update_csv_with_categories()
위의 코드처럼 진행을 시키면,
요로코롬 담기게 됩니다.
https://github.com/croppedeyebrow/selenium_pinterest_crowling