-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.py
More file actions
155 lines (120 loc) · 3.35 KB
/
Copy pathmain.py
File metadata and controls
155 lines (120 loc) · 3.35 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
import os
import requests
import json
import pandas as pd
from datetime import datetime, timedelta
from pytrends.request import TrendReq
# =========================================
# 기본 설정
# =========================================
KEYWORDS = [
"홍콩여행",
"홍콩디즈니랜드",
"디즈니랜드",
"디즈니랜드호텔"
]
today = datetime.today()
two_year_ago = today - timedelta(days=365*2)
# =========================================
# NAVER TREND
# =========================================
client_id = os.environ.get("NAVER_CLIENT_ID")
client_secret = os.environ.get("NAVER_CLIENT_SECRET")
naver_url = "https://openapi.naver.com/v1/datalab/search"
headers = {
"X-Naver-Client-Id": client_id,
"X-Naver-Client-Secret": client_secret,
"Content-Type": "application/json"
}
keyword_groups = [
{"groupName": kw, "keywords": [kw]}
for kw in KEYWORDS
]
naver_data = {
"startDate": two_year_ago.strftime("%Y-%m-%d"),
"endDate": today.strftime("%Y-%m-%d"),
"timeUnit": "week",
"keywordGroups": keyword_groups
}
naver_response = requests.post(
naver_url,
headers=headers,
data=json.dumps(naver_data)
)
# ✅ API 에러 체크
if naver_response.status_code != 200:
print("❌ Naver API 오류:", naver_response.text)
raise Exception("Naver API 호출 실패")
naver_json = naver_response.json()
naver_rows = []
for result in naver_json["results"]:
keyword_name = result["title"]
for item in result["data"]:
naver_rows.append({
"date": item["period"],
"keyword": keyword_name,
"naver_ratio": item["ratio"]
})
naver_df = pd.DataFrame(naver_rows)
# 날짜 처리
naver_df['date'] = pd.to_datetime(naver_df['date'])
naver_df['year_week'] = naver_df["date"].dt.strftime("%Y-%U")
# -------------------------
# GOOGLE TRENDS
# -------------------------
# pytrends = TrendReq(
# hl="ko-KR",
# tz=540,
# timeout=(10,25),
# retries=2,
# backoff_factor=0.5
# )
# import time
# time.sleep(5)
# pytrends.build_payload(
# KEYWORDS,
# timeframe='today 2-y',
# geo='KR'
# )
# google_df = pytrends.interest_over_time()
# if google_df.empty:
# raise Exception("❌ Google Trends 데이터 없음")
# google_df = google_df.reset_index()
# # isPartial 제거
# google_df = google_df.drop(columns=["isPartial"], errors="ignore")
# # 날짜 처리
# google_df["date"] = pd.to_datetime(google_df["date"])
# google_df["year_week"] = google_df["date"].dt.strftime("%Y-%U")
# # Wide → Long 변환
# google_df = google_df.melt(
# id_vars=["date", "year_week"],
# value_vars=KEYWORDS,
# var_name="keyword",
# value_name="google_ratio"
# )
# # -------------------------
# # MERGE(Draft)
# # -------------------------
# final_df = pd.merge(
# google_df,
# naver_df[["year_week", "keyword", "naver_ratio"]],
# how="left",
# left_on=["year_week", "keyword"]
# )
# # 정렬
# final_df = final_df.sort_values(["keyword", "date"])
# final_df.to_csv(
# "trend_result.csv",
# index=False,
# encoding="utf-8-sig"
# )
# -------------------------
# 'naver_df' 출력
# -------------------------
naver_df = naver_df.sort_values(["keyword", "date"])
naver_df.to_csv(
"NaverTrend_result.csv",
index=False,
encoding="utf-8-sig"
)
print("✅ NaverTrend_result.csv 저장 완료")