KiprisAPI/xmltest.py

56 lines
4.1 KiB
Python

import xml.etree.ElementTree as ET
import requests
# XML 응답 데이터 (예시)
# xml_response = b'\xec\xa3\xbc\xec\x8b\x9d\xed\x9a\x8c\xec\x82\xac</applicantName><applicationDate>20230102</applicationDate><applicationNumber>4020230000430</applicationNumber><applicationStatus>\xea\xb3\xb5\xea\xb3\xa0</applicationStatus><bigDrawing>http://plus.kipris.or.kr/kiprisplusws/fileToss.jsp?arg=ad7a17eeeef6e4ea4b5e22ef00dd3e2991ba5d9d09407d4bf69fd0e282d93ba4822ea711d1c0014105513d5758c737d00c9e62115cad0aef</bigDrawing><classificationCode>03</classificationCode><drawing>http://plus.kipris.or.kr/kiprisplusws/fileToss.jsp?arg=ed43a0609e94d6e251697a9d72a913440be47db3b03c4b733d99b169217b523f0853e0d6dd613d455ccd291c28fd8817ed949b84dd8bb0c3</drawing><fullText>Y</fullText><indexNo>4</indexNo><internationalRegisterDate></internationalRegisterDate><internationalRegisterNumber></internationalRegisterNumber><priorityDate></priorityDate><priorityNumber></priorityNumber><publicationDate>20240403</publicationDate><publicationNumber>4020240052090</publicationNumber><regPrivilegeName></regPrivilegeName><regReferenceNumber></regReferenceNumber><registrationDate></registrationDate><registrationNumber></registrationNumber><registrationPublicDate></registrationPublicDate><registrationPublicNumber></registrationPublicNumber><title>\xec\x8a\xa4\xed\x82\xa4\xec\x97\x90\xec\x9d\xb4\xed\x8a\xb8</title><viennaCode></viennaCode></item></items></body><count><numOfRows>10</numOfRows><pageNo>1</pageNo><totalCount>4</totalCount></count></response>'
apikey = 'X9Tz3JqC/JcCwxnNewA6qdloIN6QFIitVBgS1a2KVDYk1AmddaDTvzr6+t3dyLZV3gh2TPXdNhxsRQwaKP673Q=='
url = 'http://kipo-api.kipi.or.kr/openapi/service/trademarkInfoSearchService/getWordSearch'
params = {
'serviceKey': apikey, # 디코딩된 키 사용
'searchString': '스키에이트',
'searchRecentYear': '0',
'title': '',
'fullText': '',
'drawing': '',
'bigDrawing': ''
}
response = requests.get(url, params=params)
decoded_data = response.content.decode('utf-8')
print(f"decoded_data : {decoded_data}")
root = ET.fromstring(decoded_data)
# 결과 저장을 위한 딕셔너리 생성
results = []
# 'item' 태그를 순회하면서 필요한 데이터 추출
for item in root.findall('.//body/items/item'):
result = {
"index_no": item.find('indexNo').text if item.find('indexNo') is not None else None,
"application_number": item.find('applicationNumber').text if item.find('applicationNumber') is not None else None,
"application_date": item.find('applicationDate').text if item.find('applicationDate') is not None else None,
"publication_number": item.find('publicationNumber').text if item.find('publicationNumber') is not None else None,
"publication_date": item.find('publicationDate').text if item.find('publicationDate') is not None else None,
"registration_date": item.find('registrationDate').text if item.find('registrationDate') is not None else None,
"registration_number": item.find('registrationNumber').text if item.find('registrationNumber') is not None else None,
"applicant_name": item.find('applicantName').text if item.find('applicantName') is not None else None,
"agent_name": item.find('agentName').text if item.find('agentName') is not None else None,
"title": item.find('title').text if item.find('title') is not None else None,
"drawing_url": item.find('drawing').text if item.find('drawing') is not None else None,
"big_drawing_url": item.find('bigDrawing').text if item.find('bigDrawing') is not None else None,
"full_text": item.find('fullText').text if item.find('fullText') is not None else None,
"application_status": item.find('applicationStatus').text if item.find('applicationStatus') is not None else None,
"classification_code": item.find('classificationCode').text if item.find('classificationCode') is not None else None
}
results.append(result)
# 결과 출력 (첫 번째 아이템 예시)
if results:
first_item = results[0]
print("첫 번째 아이템 정보:")
for key, value in first_item.items():
print(f"{key}: {value}")
else:
print("결과가 없습니다.")