IT 프로그래밍/빅데이터

[Bigdata] 공공데이터포털 활용하기

잉휴 2021. 3. 5. 14:35

빠르게 변화하지 않는 정보 (ex> 전국 약국 위치 정보) 는 파일 데이터 정보로 다운 받으면 됩니다

전국 약국 정보 조회 서비스 | 공공데이터포털 (data.go.kr)->바로가기->검색결과 다운로드

 

또는 노선정보조회 서비스 | 공공데이터포털 (data.go.kr)->활용신청->활용목적 등을 기재한 후 신청완료

 

1. 활용신청하기

 

 

2. 활용가이드 보기

다음과 같이 공공데이터에서 key와 활용가이드를 통해 필요한 변수명을 가져올 수 있습니다

-> 참고문서 클릭!

또는

->밑으로 스크롤, 요청변수에서 확인할 수 있습니다 

 

 

 

아래쪽엔 친절하게 Python 그리고 다양한 언어로 작성하는 방법을 알려줍니다

3. 코드 입력하기

 

from bs4 import BeautifulSoup
import urllib.request as req
busNum = '360'
key = 'fWk84AMg02ZB1urJXgQMH%2BX83s0OWsS6w2EL6DeHaB4dcm0UpTxQ2IdYZQduk%2BL4Ebm81maZr08z%2F2ZNCb8qAA%3D%3D'
url1 = 'http://ws.bus.go.kr/api/rest/busRouteInfo/getBusRouteList?serviceKey='+key+'&strSrch='+busNum
savename = 'C:/mypython/businfo.xml'
req.urlretrieve(url1, savename)

xml = open(savename, 'r', encoding='utf-8').read()
soup = BeautifulSoup(xml, 'xml')

busRouteId = None
for itemList in soup.find_all('itemList') :
    busRouteId = itemList.find('busRouteId').string
    busRouteNm = itemList.find('busRouteNm').string
    if busRouteNm == busNum :
        break
        
url2 = 'http://ws.bus.go.kr/api/rest/busRouteInfo/getStaionByRoute?ServiceKey='+key+'&busRouteId='+busRouteId

savename = 'C:/mypython//buspos.xml'
req.urlretrieve(url2, savename)
xml = open(savename, 'r', encoding='utf-8').read()
soup = BeautifulSoup(xml, 'xml')

busPos = []
for itemList in soup.find_all('itemList') :
    gpsY = itemList.find('gpsY').string
    gpsX = itemList.find('gpsX').string

    busPos.append((gpsY, gpsX))

print('[ ' + busNum + '번 버스의 운행 위치 ]')
if len(busPos) != 0 :
    print(busNum + '번 버스 ' + str(len(busPos)) + '대 운행중...')
    for lat,lng in busPos :
        print(lat+','+lng)
else :
    print('현재 운행중인 ' + busNum + '번 버스가 없어요...')

->파일로 저장하는 부분은 본인 jupyter notebook저장 경로로 설정하시면 됩니다!