2020. 10. 26. 13:43ㆍ카테고리 없음
공공데이터포털에서 사용자키를 얻었으면 파이썬(Python)를 이용하여 데이터를 획득하는 방법을 알아보도록 하겠습니다.
공공데이터포털에서 사용자키 받는 방법 ▶[Python]공공데이터포털 오픈 API사용하기 (아파트 전월세 자료)
개발환경은 Jupyter Notebook입니다.
준비물은 ①요청 URL, ②사용자키 있으면 됩니다.
아래는 최종 코드입니다:)
from urllib.parse import urlencode, quote_plus
import requests
import pandas as pd
from bs4 import BeautifulSoup
import bs4
url ="http://openapi.molit.go.kr:8081/OpenAPI_ToolInstallPackage/service/rest/RTMSOBJSvc/getRTMSDataSvcAptRent?"
service_key = "서비스키"
base_date = ["202007","202008","202009"]
for i in range(len(base_date)):
gu_code = '11545' ##구 단위로 데이터를 확보하는 것. ex)11545 = 금천구
payload = "serviceKey=" + service_key + "&"+"LAWD_CD=" + gu_code + "&"+"DEAL_YMD=" + base_date[i]+ "&"
res = requests.get(url + payload).text
xmlobj = bs4.BeautifulSoup(res, 'lxml-xml')
rows = xmlobj.findAll('item')
rowList = []
nameList = []
columnList = []
rowsLen = len(rows)
for i in range(0, rowsLen):
columns = rows[i].find_all()
columnsLen = len(columns)
for j in range(0, columnsLen):
if i == 0:
nameList.append(columns[j].name)
eachColumn = columns[j].text
columnList.append(eachColumn)
rowList.append(columnList)
columnList = []
result = pd.DataFrame(rowList, columns=nameList)
먼저 URL부분에서는 요청URL를 넣으면 되는데요
요청 URL은 공공데이터포털 OPEN API상세 부분에 참고문서 'd)요청/응답 메세지 예제'를 보시면 됩니다.
service_key에는 공공데이터포털에서 활용신청한 본인 key를 ""안에 넣어주세요~
요청 URL과 함께 던져지는 파라미터는 2개가 있었죠~?(참고문서 참고)
LAWD_CD 법정동코드와 DEAL_YWD 년월을 함께 보내야합니다.
여기서 법정동코드는▶ http://www.code.go.kr/stdcode/regCodeL.do
이곳에서 본인이 조회하고 싶은 '**구'을 치면
여기서 법정동코드를 얻을 수 있는데..
주의해야할 점은 저도 저 10자리를 다 넣고 요청을 보냈는데.. 안되는거에요...
알고보니.. 참고문서에 10자리 중 앞 5자리를 넣어야 된다고 적혀있더라구요..(난독증 어쩔겨...)
그래서 11545를 코드로 넣으면 됩니다~
DEAL_YWD는 날짜를 넣는 파라미터인데요~
대부분 데이터를 얻을때, 해당년도의 하나의 달만 얻지 않으니, 저는 리스트로 연속된 달을 넣고 for문을 돌렸어요.
그리고 요청 URL를 보내면 초기 데이터형은 XML입니다.
그래서 XML(데이터 미리보기)에서 <item></item>코드로 쌓여져 있다는 것을 볼 수 있습니다.
findAll로 데이터를 모두 가져온다음, 리스트에 넣고 DataFrame으로 변환해주면 됩니다.
아래는 결과물 입니다 :)
모두 공공데이터 포털을 활용하여 좋은 데이터분석을 해보아요~~ ^^
개발 참고사이트: greendreamtrre.tistory.com/268