반응형
Book.py
#Book.py
class Book:
def __init__(self,title,author,price,content="",publisher="",link="",imglink=""):
self.title = title
self.author = author
self.price = price
self.content = content
self.publisher = publisher
self.link = link
self.imglink=imglink
NaverBookSearcher.py
#NaverBookSearcher.py
import urllib.request
import json
from Book import Book
class NaverBookSearcher:
@staticmethod
def MakeBook(jsbook):
title = jsbook["title"]
author = jsbook["author"]
price = jsbook["price"]
content = jsbook["description"]
publisher = jsbook["publisher"]
link = jsbook["link"]
imglink=jsbook["image"]
return Book(title,author,price,content,publisher,link,imglink)
def __init__(self):
self.client_id ="네이버에서 발급받은 자신의 client id"
self.client_secret = "네이버에서 발급받은 자신의 client secret"
self.url = "https://openapi.naver.com/v1/search/book.json"
self.query=""
self.query_str=""
def SetQuery(self,qstr):
self.query = "query="+urllib.parse.quote(qstr)
self.query_str = self.url+"?"+self.query
def Request(self,start,display):
start_str = "start="+str(start)
display_str = "display="+str(display)
fquery_str = self.query_str +"&"+start_str+"&"+display_str
request = urllib.request.Request(fquery_str)
request.add_header("X-Naver-Client-Id",self.client_id)
request.add_header("X-Naver-Client-Secret",self.client_secret)
response = urllib.request.urlopen(request)
rescode = response.getcode()
if rescode != 200:
return None
content = response.read()
data = content.decode('utf-8')
jdata = json.loads(data)
total = jdata['total']
return jdata['items'],total
def RequestAll(self):
redatas=list()
start = 1
display=10
datas,total = self.Request(start,display)
redatas.extend(datas)
start = start+display
while (start<total)and(start<1000):
datas,total = self.Request(start,display)
redatas.extend(datas)
start = start+display
return redatas
main.py
from NaverBookSearcher import NaverBookSearcher
q = input("질의:")
ns = NaverBookSearcher()
ns.SetQuery(q)
books = ns.RequestAll()
for bookjs in books:
book = NaverBookSearcher.MakeBook(bookjs)
print("제목:",book.title)
print("저자:",book.author)
print("가격:",book.price)
반응형
'언어 자료구조 알고리즘 > 파이썬(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.10 |
[python] 도서 검색기 feat. 네이버 개발자센터 (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 |