본문 바로가기
컴퓨터/Python

[Python] 파이썬, 서울시 버스도착정보 공공데이터

by sjblog 2023. 4. 17.
반응형

<완성본>

 

 

1. 공공데이터 포털

https://www.data.go.kr/tcs/dss/selectApiDataDetailView.do?publicDataPk=15000314 

 

서울특별시_버스도착정보조회 서비스

특정 정류소에 대한 버스 도착예정 정보 제공 특정 정류소의 모든 버스 도착정보는 "서울특별시_정류소조회 서비스" 에서 제공

www.data.go.kr

공공데이터포털에 로그인 후, OpenAPI 활용신청을 합니다.

(사용승인까지 시간이 걸릴 수 있습니다. 특히 주말의 경우 승인이 지연되었습니다.)

 

2. OpenAPI 조회

import requests
import json
from pandas import json_normalize
import pandas as pd
key = "인증키를 입력해주세요"
bus_stop_id = "100000001"	# 종로2가사거리 정류장
bus_id = "123000010"		# 741번 버스
ord_number = '77'		# 741번 버스 순번

url = f'http://ws.bus.go.kr/api/rest/arrive/getArrInfoByRoute?ServiceKey={key}&stId={bus_stop_id}&busRouteId={bus_id}&ord={ord_number}&resultType=json'

response = requests.get(url)
if response.status_code == 200:
	json_ob = json.loads(response.text)
	data = json_ob['msgBody']['itemList']
	df = json_normalize(data)
	print(f"1번째 버스 현재 위치: {df['stationNm1'].iloc[0]}, 남은 시간: {df['arrmsg1'].iloc[0]}")
	print(f"2번째 버스 현재 위치: {df['stationNm2'].iloc[0]}, 남은 시간: {df['arrmsg2'].iloc[0]}")

이외에도 OpenAPI로 다양한 정보를 받아볼 수 있습니다.

 

버스 정류장 번호(bus_stop_id)와 버스 번호(bus_id), 순번(ord_number)은 후술하겠습니다.

 

3. 버스 정보

https://data.seoul.go.kr/dataList/OA-1095/L/1/datasetView.do

 

열린데이터광장 메인

데이터분류,데이터검색,데이터활용

data.seoul.go.kr

서울시 노선현황을 다운받아,

 

버스 정류장 번호(bus_stop_id)(NODE_ID)와 버스 번호(bus_id)(ROUTE_DI), 순번(ord_number)을 찾을 수 있습니다.

반응형