-
Notifications
You must be signed in to change notification settings - Fork 0
/
keywords.py
69 lines (49 loc) · 1.55 KB
/
keywords.py
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
import urllib.parse
import itertools
from openpyxl import Workbook
from naver_search_ad.common import naver
@naver
def _related_keyword(query):
'''네이버 검색광고의 키워드
hintKeywords 는
단어에 공백이 없고,
각 단어는 콤마(,)로 최대 5개까지 연결한 문자열
'''
return {
'method': "GET",
'path': "/keywordstool",
'query': urllib.parse.urlencode(query)
}
def _related_point(response):
''' 연관성 점수'''
for i, keyword in zip(
range(len(response.get('keywordList')), 0, -1),
response.get('keywordList')):
keyword['related_point'] = i
return response
def related_keyword(keywords):
if type(keywords) is str:
keywords = keywords.upper()
elif type(keywords) is list:
keywords = ','.join(keywords).upper()
query = {
'hintKeywords': keywords,
'showDetail': 1
}
response = _related_keyword(query)
response = _related_point(response)
return response
def _write_xls(data_list, filename):
'''엑셀로 저장(xls)'''
wb = Workbook(write_only=True)
ws = wb.create_sheet()
headers = list(set(itertools.chain.from_iterable(data_list)))
ws.append(headers)
for elements in data_list:
ws.append([elements.get(h) for h in headers])
wb.save(filename)
def related_keyword_to_xls(keywords, filename):
r = related_keyword(keywords)
keyword_list = r.get('keywordList')
if keyword_list:
_write_xls(keyword_list, filename)