(2) [Python/Colab] KCI Open API 사용하기

이제 발급받은 인증키로 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)

출력 결과

참고자료

 

[python] 공공데이터 OPEN API의 xml 을 DataFrame으로 변환하기(feat. 코로나 확진자 수)

안녕하세요~! 오늘은 공공데이터 openAPI의 xml을 Pandas DataFrame으로 변환하여 보도록 하겠습니다. json에서 DataFrame으로의 변환은 여기를 클릭해서 확인해 주세요 :) step1. 데이터 활용신청하기 공공데

wonhwa.tistory.com

 

728x90