일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 사이킷런
- 이력서 첨삭
- 판다스
- pandas
- AutoML
- 대학원
- 하이퍼 파라미터 튜닝
- 베이지안 최적화
- 데이터분석
- 파라미터 튜닝
- 주식데이터
- 주가데이터
- 데이터 사이언스
- 코딩테스트
- 파이썬
- 자기소개서
- 경력 기술서
- 하이퍼 파라미터
- 데이터사이언티스트
- 데이터사이언스
- 데이터 사이언티스트
- sklearn
- 퀀트 투자 책
- 커리어전환
- 데이터사이언스학과
- 퀀트
- 랜덤포레스트
- 주요 파라미터
- 머신러닝
- 경력기술서 첨삭
- Today
- Total
GIL's LAB
KIPRIS 특허 데이터 수집 본문
이번 포스팅에서는 특허정보검색서비스 키프리스에서 API를 통해 특허 데이터를 수집하는 방법에 대해 알아보겠습니다.
키프리스 플러스 가입
먼저 키프리스 플러스에 가입합니다. API 키를 받기 위한 부분이므로 반드시 가입해야 합니다.
https://plus.kipris.or.kr/portal/main.do
API 키 확인
키프리스 플러스에 로그인한 뒤, 우측 상단에 마이페이지 > API KEY 관리에 가면 다음과 같이 키를 확인할 수 있습니다.
서비스 신청
위 API Key는 그대로 활용할 수 없으며 API 데이터를 신청해야 합니다.
데이터 서비스 > 서비스 신청 > Open API에 접속해서 구매할 상품을 고릅니다.
일반적으로는 특허 실용 공개 등록 공보를 가장 많이 사용할 것 같습니다.
구매하고자 하는 상품을 선택하고 아래 장바구니 버튼을 누릅니다.
그러면 다음과 같이 확인메시지가 뜨는데, 확인을 누릅니다.
그리고나서 장바구니로 이동합니다.
장바구니에 가면 아까 장바구니에 담았던 특허 실용 공개 등록공보가 있습니다.
해당 부분을 클릭한 뒤, 하단에 서비스 신청정보를 넣어줍니다.
참고로 처음에는 무료로 구매한 뒤에 나중에 더 필요한 경우 유료로 바꾸기를 권장합니다.
또한, 1천건 호출 제한인데 데이터 개수가 1000개가 아님에 주의해야 합니다.
1천건 호출이면 1회성 분석에 필요한 어지간한 크기의 데이터는 모두 커버할 수 있습니다.
이제 신청한 뒤 API가 활성화될 때까지 기다려줍니다.
무료의 경우에는 2-30분 정도 걸린 듯 합니다.
파이썬 코드
이제 특허 데이터를 수집하기 위한 코드를 만들어보겠습니다.
먼저 다음과 같이 관련 모듈을 불러옵니다.
import requests
import xmltodict
import pandas as pd
import time
다음으로 url에서 데이터를 가져오는 함수인 get_reponse 함수와 데이터를 파싱한 함수인 extract_items_from_body 함수를 정의하겠습니다.
def get_response(url):
while True:
try:
reponse = requests.get(url)
time.sleep(1)
break
except:
time.sleep(60 * 15)
content = reponse.text
content = xmltodict.parse(content)['response']
return content
def extract_items_from_body(content):
result = []
for item in content['body']['items']['item']:
result.append(item.values())
result = pd.DataFrame(result, columns = item.keys())
return result
이제 수집할 url만 정의하면 됩니다.
서비스별 url 정보는 아래에서 확인할 수 있습니다.
https://plus.kipris.or.kr/portal/data/service/List.do?subTab=SC001&entYn=N&menuNo=200100
이 가운데 저는 특허·실용 공개·등록공보 > REST > 항목별 검색 > 전체검색을 사용하겠습니다.
먼저 url 구조를 정의해야 합니다.
쿼리에는 ipc, date_range, pn, api_key를 사용하며, 다음과 같이 정의해주겠습니다.
api_key = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
date_range = '20180101~20221231'
ipc = 'A01B'
pn = 1
다음으로 url을 정의해줍니다.
url = 'http://plus.kipris.or.kr/kipo-api/kipi/patUtiModInfoSearchSevice/getAdvancedSearch?ipcNumber={}®isterDate={}&numOfRows=20&pageNo={}&ServiceKey={}'.format(ipc, date_range, pn, api_key)
여기서 ?전까지가 메인 url이고 뒷 부분이 쿼리라고 보시면 됩니다.
뒷 부분을 잘라서 보면 "변수명=값"을 &로 이은 것을 알 수 있습니다.
저는 ipcNumber, registerDate, numOfRows, pageNo, ServiceKey를 쿼리로 사용했습니다.
이제 pn을 1부터 늘려가면서 모든 데이터를 가져오겠습니다.
total_data = pd.DataFrame()
pn = 1
while True:
try:
url = 'http://plus.kipris.or.kr/kipo-api/kipi/patUtiModInfoSearchSevice/getAdvancedSearch?ipcNumber={}®isterDate={}&numOfRows=50&pageNo={}&ServiceKey={}'.format(ipc, date_range, pn, api_key)
content = get_response(url)
result = extract_items_from_body(content)
total_data = pd.concat([total_data, result], axis = 0, ignore_index = True)
print(ipc, pn)
pn += 1
except:
break
total_data에 우리가 수집한 모든 데이터가 담겼으며, for문을 활용하고 다양한 검색 조건을 활용하면 조금 더 편리하게 우리가 원하는 데이터를 수집할 수 있습니다.
데이터 분석 서비스가 필요한 분은 아래 링크로!
'파이썬 > 업무 자동화' 카테고리의 다른 글
[예제 3] 연봉 계약서 자동 생성하기 (0) | 2022.01.14 |
---|---|
[예제 2] 전종목 주가 데이터 다운로드 (5) | 2022.01.11 |
[예제 1] 교육신청서 취합하기 (0) | 2022.01.10 |