본문으로 바로가기
from bs4 import BeautifulSoup
import urllib.request as req
import os.path
searchDate = '20201111000000'
#API키
apikey="api 키"
#API 지정
api="http://openapi.jejuits.go.kr/rfcapi/rest/jejuits/getTrafficInfoDailyStat?authApiKey={key}&statDt={stat}"
#API의 URL 구성하기
url = api.format(key=apikey, stat=searchDate)
print("URL : ", url)
#XML 다운로드
fileName = "jejuTraffic.xml"
if not os.path.exists(fileName):
req.urlretrieve(url, fileName)
print("if not os.path.exists")
# 다운받은 파일을 분석하기
xml_data = open(fileName, "r", encoding="utf-8").read()
soup = BeautifulSoup(xml_data, 'html.parser')
info = {}
for trafficList in soup.find_all("data"):
for location in trafficList.find_all("list"):
linkId = location.find("link_id").string
speed = location.find("sped").string
tfyl = 0
if location.find("tfyl") != None:
tfyl = location.find("tfyl").string
trvlhh = location.find("trvl_hh").string
ocpyrate = location.find("ocpy_rate").string
if not (linkId in info):
info[linkId] = []
info[linkId].append({'tfyl': tfyl, 'speed': speed, 'ocpyrate': ocpyrate, 'trvlhh': trvlhh})
# 지역의 날씨를 구분해서 분류하기
for linkId in info.keys():
print("** 구간 ID : ", linkId)
for i in info[linkId]:
print(" - 교통량 : ", i['tfyl'])
print(" - 통계일시 : ", searchDate[:4], '년 ', searchDate[4:6], '월 ', searchDate[6:8], '일 ',
searchDate[8:10], '시 ', searchDate[10:12], '분 ', searchDate[12:], '초', sep='')
print(" - 평균속도 : ", i['speed'])
print(" - 점유율 : ", i['ocpyrate'])
print(" - 통행시간 : ", i['trvlhh'])
print("")

 

반응형