이 포스팅을 보기 전
공공데이터포털을 잘 모르신다면 포스팅을 보고 와주세요!
공공데이터에 대해 간단하게 요약해놨습니다!
이제 코딩을 시작해볼께요!
import urllib.request
import json
import matplotlib.pyplot as plt
우선 필요로하는 라이센스들을 임폴트 해줍니다.
해당 url에 대한 데이터를 요청해서 json 파일로 변환해야 하기 때문에 그에 맞는 라이센스를 호출합니다.
def get_request_url(url):
req=urllib.request.Request(url)
try:
response=urllib.request.urlopen(req)
return response.read().decode('utf-8')
except Exception as e:
print(e)
return None
가장 먼저 url을 완성했다는 가정으로 url에 대한 데이터를 호출할 수 있는 함수를 생성합니다.
def getContractinformationList16(inqryDiv,numOfRows,pageNo,ver):
beginDataPoint = "201601010000"
endDataPoint = "201612290000"
access_key= 자신의 일반 인증키!
end_point= 자신의 End Point 또는 서비스 요청 포인트!
parameters="?serviceKey="+access_key
parameters+="&numOfRows="+str(numOfRows)
parameters+="&pageNo="+str(pageNo)
parameters+="&inqryDiv="+str(inqryDiv)
parameters+="&inqryBgnDt="+str(beginDataPoint)
parameters+="&inqryEndDt="+str(endDataPoint)
parameters+="&type="+str(ver)
url=end_point+parameters
retData=get_request_url(url)
print("parameters : " + parameters)
if (retData==None):
return None
else:
return json.loads(retData)
getContractinformationList16 함수를 만들어서 해당 url에 필요한 데이터들을 입력받아서
하나의 url을 생성해줍니다.
생성한 url은 바로 위에 생성한 get_request_url 함수를 이용하여 데이터를 받아옵니다.
쉽게 말하면 url을 생성해서 해당 url에 대한 데이터를 호출하기 위해 사전 작업과 데이터를 받아오는 작업!
Parameter는 사용자의 End Point마다 다릅니다!
위의 코드로 예시를 들어보면
http://apis.data.go.kr/1230000/CntrctInfoService/getCntrctInfoListThng
?serviceKey=해당서비스키
&numOfRows=100
&pageNo=31
&inqryDiv=1
&inqryBgnDt=201701010000
&inqryEndDt=201712300000
&type=json
이런 느낌으로 url에 입력했을 때 json 페이지가 나옵니다.
위에 url을 제작이나 파라미터들은 공공데이터 포털에 요청변수(Request Parameter)에 따라서 수정하시면 됩니다!
jsonResult=[]
inqryDiv=1
numOfRows=100
ver="json"
for i in range(1, 100):
pageNo = i;
jsonData = getContractinformationList17(inqryDiv,numOfRows,pageNo,ver)
temp = (jsonData.get("response"))
temp1 = (temp.get("body"))
temp2 = (temp1.get("items"))
jsonResult += temp2
with open('test11.json','w',encoding='utf-8') as outfile:
retJson = json.dumps(jsonResult, indent=4,sort_keys=True,ensure_ascii=False)
outfile.write(retJson)
위에서 만들었던 함수들을 이용해서 url에 알맞은 데이터를 호출하고
이 데이터를 json 파일로 변환합니다.
get을 이용하여 데이터를 쪼개서 추출해줍니다.
이걸 사용하는 이유를 설명해드리면
Json도 결국 xml처럼 테그로 나눠지는데
response -> body -> items를 확인할 수 있습니다.
여기서 get을 하지 않는다면?
json파일에는 response에 관련된 값들만 있겠죠?
결국 null 값이나 response 값들이 존재하게 됩니다.
따라서 items에 대한 값들만 불러와야 합니다.
그리고 마지막에는 json 파일로 write 해주면 완성!
이번 포스팅은 url 데이터를 json으로 변환해봤습니다.
다음 포스팅에서는 DataFrame을 만들어 보도록 하겠습니다!
'Programing > Java & Spring' 카테고리의 다른 글
코딩 일기 : grid나 js파일이 정상 작동을 하지 않는다...(이론) (0) | 2020.12.03 |
---|---|
자투리 시간에 만드는 개인 포토폴리오 프로젝트! vo1 : 무료 Boot 다운받아서 파일 로드와 파일 설정하기! (0) | 2020.11.20 |
공공데이터포털의 데이터를 이용하여 json 파일을 만들어보자! ver3 [DataFrame과 코드 변형하기] (0) | 2020.11.19 |
코딩 일기 : 파이썬에서 Run 실행 시 시작 시간을 알아보자![datetime] (0) | 2020.11.18 |
공공데이터포털의 데이터를 이용하여 json 파일을 만들어보자! ver1 [공공데이터포털 이용하기] (0) | 2020.11.17 |