romworld

[API] 공공데이터포털 openAPI 데이터 가져오기 ( python) 본문

etc

[API] 공공데이터포털 openAPI 데이터 가져오기 ( python)

inderrom 2023. 11. 14. 17:55

1. 공공데이터포털

  • 회원가입 후 필요한 api 검색후 신청
  • 신청후 받은 "인증키" 로 url 접속
  • 필요한 파라미터 상세보기에 나와있으므로 문서보면서 사용하면 됨

2. 파이썬 코드 작성

  • 필요한 패키지 import
  • 하드코딩을 할 경우 페이지가 바뀔 때마다 유지보수 어려움이 있으므로
  • 페이지의 일부만 가져와서 , json 속성으로 안에있는 data 전체를 csv에 저장
from urllib.request import Request, urlopen
from urllib.parse import urlencode
import pandas as pd
import json

base_url = "https://api.odcloud.kr/api/15002831/v1/uddi:48d98d67-24eb-457b-8413-f452f763540a"
api_key = '인증키'

page = 1
per_page = 10
total_data = []

while True:
    params = {
        'page': page,
        'perPage': per_page,
        'serviceKey': api_key,
    }

    # API request&response
    url = f"{base_url}?{urlencode(params)}"
    response = urlopen(url)
    json_api = json.loads(response.read().decode('utf-8'))
    
    if not json_api['data']:
        break

    # data append
    total_data.extend(json_api['data'])

    # next page
    page += 1

# DataFrame
df = pd.DataFrame(total_data)
print(df)

# csv file save
df.to_csv("save_csv3.csv", mode='w', index=False)

 

3. 리눅스에서 실행해보기

  • 로컬 -> 원격으로 보낼 때 파일을 scp로 직접 넣어줄 수도 있지만, 방화벽문제로 막혀있는 경우
  • 나는 파일 하나만 넣어주면 되어서 (애초에 파이썬 설치가 완료되어있는 상황)
  • 파일을 만들어서 vi로 직접 스크립트 내용 넣어줌
  • python3 파일명.py << 실행권한을 먼저 줘야한다
  • chmod +x 파일명.py
  • 명령어 입력 후 실행하면 완성 ~~
  • 만약 필요한 라이브러리가 install 안되어있을 시 pip3 install 명칭 입력해주면됨

 

Comments