반응형
Main.py
import urllib.request
import json
class Morpheme:
def __init__(self,word):
self.word = word
self.ref = 1
def Merge(self,other):
if self.IsEqual(other):
self.ref = self.ref + other.ref
def IsEqual(self,other):
return self.word == other.word
class MorphemeParser:
@staticmethod
def Parse(src):
morphes = list() #반환할 형태소 컬렉션
src = MorphemeParser.RemoveNonAlpha(src)
msrc = src.split(' ')
for elem in msrc:
if str.isalpha(elem):
morphes.append(Morpheme(elem))
morphes = MorphemeParser.Merge(morphes)
return morphes
@staticmethod
def Merge(morphes):
remoes = list()
for morph in morphes:
rcnt = len(remoes)
flag = False
for index in range(0,rcnt):
if remoes[index].word == morph.word:
remoes[index].Merge(morph)
flag = True
break
if flag == False:
remoes.append(morph)
return remoes
@staticmethod
def RemoveNonAlpha(src):
dest=""
for elem in src:
if str.isalpha(elem) or str.isspace(elem):
dest += elem
return dest
@staticmethod
def FindTag(src):
s = src.index('<')
e = src.index('>')
return s,e
@staticmethod
def RemoveTag(src):
try:
while True:
s,e = MorphemeParser.FindTag(src)
src = src[0:s]+src[e+1:]
except:
return src
client_id ="네이버 개발자센터에서 발급한 Client ID"
client_secret="네이버 개발자센터에서 발급한 Client Secret"
url = "https://openapi.naver.com/v1/search/news.json"
query = input("질의:")
query_param = "query="+urllib.parse.quote(query)
#쿼리문자열 구조
#사이트 주소?인자=값&인자=값
query_str = url+"?"+query_param
request = urllib.request.Request(query_str)
request.add_header("X-Naver-Client-Id",client_id)
request.add_header("X-Naver-Client-Secret",client_secret)
response = urllib.request.urlopen(request)
if response.getcode() != 200:
print("실패!!!")
else:
content = response.read()
data = content.decode('utf-8')
jdata = json.loads(data)
total = jdata['total']
print("검색 결과 개수:",total)
i=0
for item in jdata['items']:
print("제목:",MorphemeParser.RemoveTag(item['title']))
des = MorphemeParser.RemoveTag(item['description'])
print(des)
print("==============")
res = MorphemeParser.Parse(des)
fs = open("data"+str(i)+".txt","w")
for morph in res:
s = morph.word + ","+str(morph.ref)+"\n"
fs.writelines(s)
fs.close()
i=i+1
반응형
'언어 자료구조 알고리즘 > 파이썬(Python)' 카테고리의 다른 글
[python] 뉴스 검색기V04 feat.네이버 개발자센터 (0) | 2020.11.11 |
---|---|
[python] 뉴스 검색기V03 feat. 네이버 개발자센터, 형태소 분석, MSSQL (0) | 2020.11.11 |
[ python] 뉴스 분석기 feat.네이버 개발자센터 , 형태소 분석 (0) | 2020.11.10 |
[python] 도서 검색기 feat. 네이버 개발자센터 (0) | 2020.11.09 |
[python] 네이버 도서 검색 API 활용 - Json (0) | 2020.11.09 |
파이썬에서 별도의 선택문은 없어요. 대신 elif를 이용하세요. (0) | 2020.10.22 |
[python] 13. 리스트의 요소 개수 알아내기 및 정렬하기 (3) | 2016.05.31 |
[python] 12. 리스트에서 자료 삭제하기 (0) | 2016.05.31 |
[python] 11. 리스트에 자료를 추가하기 (0) | 2016.05.23 |
[python] 10. 파이썬을 잘 사용하기 위한 첫 걸음, 리스트를 소개합니다. (0) | 2016.05.20 |