네이버에는 인플루언서들이 사용한 키워드가 어떤 것들이 있는지 주제별로 제공해주고 있습니다. 이 정보를 아는 분들이 그렇게 많지 않은 듯 합니다. 저도 최근에야 알았습니다.
![](https://webmoum.com/wp-content/uploads/2024/05/인플루언서.jpg)
각 주제별로 키워드가 적게는 수백에서 많게는 만개 이상까지 있는데 이걸 한번에 뽑아서 저장할 수 있다면 좋을 것입니다. 그런 분들을 위해 제가 미리 코드를 짜봤습니다.
아래 코드를 써서 저 키워드들을 모조리 추출해 보세요.
import requests, json
import re
import time
def savekwd(category, data):
kwd = data['normal']
txt = ''
for k in kwd:
txt += f"{list(k.keys())[0]}\n"
with open(f"./{category.replace('/', '')}.txt", "w+", encoding="utf-8") as f:
f.write(txt)
def category():
headers = {
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8',
'Accept-Language': 'ko-KR,ko;q=0.9',
'Upgrade-Insecure-Requests': '1',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36',
}
response = requests.get('https://in.naver.com/keywords', headers=headers)
pattern = 'window.__PRELOADED_STATE__ = (.*?);'
match = re.search(pattern, response.text)
if match is not None:
general = []
data = json.loads(match.group(1))['keyword']['categoryGroups']['data']
for d in data:
ddata = d['categories']
for j in ddata:
general.append(j)
return general
else:
return ''
def getherKey(id, name):
global allKwd, headers
allKwd = {}
headers = {
'Accept-Language': 'ko-KR,ko;q=0.7',
'Origin': 'https://in.naver.com',
'Referer': 'https://in.naver.com/keywords',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36',
'content-type': 'application/json',
}
def first(id):
recomm = []
json_data = {
'operationName': 'getWhitePoolKeywords',
'variables': {
'input': {
'categoryId': id,
'limit': 3,
},
},
'query': 'query getWhitePoolKeywords($input: WhitePoolKeywordInput!) {\n whitePoolKeywords(input: $input) {\n ...Keyword\n __typename\n }\n}\n\nfragment Keyword on Keyword {\n categoryId\n challengeable\n challengeableContentCount\n challengedKeyword\n id\n name\n participantCount\n property\n thumbnailUrl\n __typename\n}\n',
}
response = requests.post('https://in.naver.com/graphql', headers=headers, json=json_data).json()
keydata = response['data']['whitePoolKeywords']
for k in keydata:
temp = {}
print(k['name'])
temp[k['name']] = k['participantCount']
recomm.append(temp)
allKwd['recomm'] = recomm
def second(id):
recomm = []
cursor = 0
cnt = 1
while True:
try:
if cursor > 0:
json_data = {
'operationName': 'getSearchCategoryKeywords',
'variables': {
'input': {
'categoryId': id,
'name': '',
},
'paging': {
'limit': 20,
'cursor': str(cursor),
},
},
'query': 'query getSearchCategoryKeywords($input: SearchKeywordInput!, $paging: PagingInput!) {\n searchCategoryKeywords(input: $input, paging: $paging) {\n items {\n ... on Keyword {\n categoryId\n challengeable\n id\n name\n participantCount\n thumbnailUrl\n challengedKeyword\n recentAdded\n __typename\n }\n __typename\n }\n paging {\n nextCursor\n total\n __typename\n }\n __typename\n }\n}\n',
}
else:
json_data = {
'operationName': 'getSearchCategoryKeywords',
'variables': {
'input': {
'categoryId': id,
'name': '',
},
'paging': {
'limit': 20,
},
},
'query': 'query getSearchCategoryKeywords($input: SearchKeywordInput!, $paging: PagingInput!) {\n searchCategoryKeywords(input: $input, paging: $paging) {\n items {\n ... on Keyword {\n categoryId\n challengeable\n id\n name\n participantCount\n thumbnailUrl\n challengedKeyword\n recentAdded\n __typename\n }\n __typename\n }\n paging {\n nextCursor\n total\n __typename\n }\n __typename\n }\n}\n',
}
response = requests.post('https://in.naver.com/graphql', headers=headers, json=json_data).json()
maindata = response['data']['searchCategoryKeywords']
items = maindata['items']
paging = maindata['paging']
for k in items:
temp = {}
print(cnt, k['name'])
temp[k['name']] = k['participantCount']
recomm.append(temp)
cnt += 1
nc = paging['nextCursor']
if nc != None:
cursor = int(nc)
time.sleep(3)
else:
break
except Exception as e:
print(e)
break
allKwd['normal'] = recomm
first(id)
second(id)
print(allKwd)
savekwd(name, allKwd)
menu = category()
while True:
n = 1
for i in menu:
print(n, f"{i['name']} (키워드 수 : {i['keywordCount']}개)")
n += 1
print(f"{n} 종료")
mymenu = input("원하는 카테고리 번호를 선택하세요 : ")
if int(mymenu) > len(menu):
exit()
else:
num = menu[int(mymenu) - 1]
id = num['id']
name = num['name']
print(num, id)
getherKey(id, name)