이제 발급받은 인증키로 KCI Open API를 사용해봅시다!
저는 구글에서 제공하는 colaboratory를 사용했어요
1. 필요한 모듈 받아오기
API로 요청을 보내고 나면 xml 형식으로 응답이 오기 때문에 응답을 처리하여 출력하기 위한 모듈들을 받아옵니다.
# 라이브러리 import
import requests # API 요청 보내기 위함
import pprint # xml 출력 확인
import urllib # url 관련 작업
2. API 요청하기
요청할 내용을 정합니다.
key에는 발급받은 KCI 인증키를 입력합니다.
저는 코로나를 검색해보겠습니다. 검색할 단어를 URL로 인코딩 해서 URL을 만든 뒤 API 요청을 보냅니다
# url 입력
key = # KCI API 키
searchWord = '코로나' # 검색 단어
searchWord = urllib.parse.quote_plus(searchWord) # 검색 단어 URL 인코딩
count = str(100) # 검색 논문 수. KCI API 는 기본 10, 최대 100 까지 제공
url = 'https://open.kci.go.kr/po/openapi/openApiSearch.kci?apiCode=articleSearch'
url += '&key=' + key
url += '&keyword=' + searchWord
url += '&displayCount=' + count
# url 불러오기
response = requests.get(url, verify=False)
contents = response.text
3. 응답 내용 출력하기
응답은 xml 형식으로 돌아옵니다.
보기 좋게 pprint에서 제공하는 PrettyPrinter를 사용해 출력해봅시다.
# 깔끔한 출력 위한 코드
pp = pprint.PrettyPrinter(indent=4)
print(pp.pprint(contents))
출력 결과
받은 contents를 BeautifulSoup를 통해 깔끔하게 처리해봅시다.
한 논문에 대한 정보의 최상위 태그는 <record>
이니 findAll('record')
를 사용합니다.
그럼 row에 <record>
태그 내의 내용들이 리스트로 저장이 됩니다.
from os import name
import xml.etree.ElementTree as et
import bs4
from lxml import html
from urllib.parse import urlencode, quote_plus, unquote
xml_obj = bs4.BeautifulSoup(contents,'lxml-xml')
rows = xml_obj.findAll('record')
print(rows)
참고자료
728x90