QA Engineering/Server API Test

공공 데이터 API XML 결과 분리해 보기

일해라폴폴 2024. 1. 22. 16:56
반응형

공공 데이터 API로 간단한 실습 같은게 있으면 좋을 것 같아서
서울시 공공데이터에 들어가 봤는데...

일단 회원가입을 하고 API Key를 받아야 한다
귀찮지만 가입을 했는데, 하루에 1천번 밖에 못쏜다 ㅠㅠ

물론 천번 쏠일이야 없겠지만
또 사람 마음이 참... 찾다보니 sample로 호출도 가능 한것 같다

기본 url에 파라메터를 조합하는 형식인데, 응답을 xml 형태로 만들어 준다
파이썬의 ET 라이브러리를 이용해 xml 데이터를 파싱 하여 사용 가능 할것 같다

import requests

# url = "http://openapi.seoul.go.kr:8088/sample/xml/ListRainfallService/1/5/%EC%84%9C%EC%B4%88%EA%B5%AC" # 서초구 실시간 강우량
# url = "http://openapi.seoul.go.kr:8088/sample/xml/ListRainfallService/1/5/%EA%B0%95%EB%82%A8%EA%B5%AC" # 강남구 실시간 강우량
url = "http://openapi.seoul.go.kr:8088/sample/xml/GetParkingInfo/1/5/%EC%A2%85%EB%A1%9C%EA%B5%AC" # 종로구 실시간 주차
response = requests.get(url)

if response.status_code == 200:
    xml_data = response.text
    import xml.etree.ElementTree as ET
    root = ET.fromstring(xml_data)
    for row in root.findall('.//row'):
        parking_name = row.find('PARKING_NAME').text
        capacity = row.find('CAPACITY').text # 총 주차면
        current_parking = row.find('CUR_PARKING').text # 현재 주차 차량수
        current_time = row.find('CUR_PARKING_TIME').text
        
        if parking_name == "세종로 공영주차장(시)":
            remaining_parking = float(capacity)-float(current_parking)
            print(f"조회시간: {current_time}, 주차장 이름: {parking_name}, 잔여주차대수: {remaining_parking:.0f}대, 전체주차대수: {capacity}대")   
        else:
            pass
else:
    print(f"Error: Unable to fetch data. Status Code: {response.status_code}")

 

이렇게 샘플 API 를 호출 하면 세종로 공영주차장(시) 정보를 깔끔히 정제 해서 가져온다
좋구먼 :)

반응형