๐พ ๊ณต๊ณต๋ฐ์ดํฐ ํฌํธ์ ๋ถ๋์ฐ ์ค๊ฑฐ๋๊ฐ ์๋ฃ๋ฅผ ๊ฐ์ ธ์๋ณด์.
- requests, pandas ๋ ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ import
- ์ธ์ฆํค์ ํ์ด์ง๋ฒํธ, ํ์ด์ง๋น ๊ฒฐ๊ณผ์, ์ง์ญ์ฝ๋, ๊ณ์ฝ ์์ format ๋ฌธ์์ด๋ก ์ฒ๋ฆฌํ์ฌ ์ ๋์ ์ผ๋ก ์ ํํ ์ ์๊ฒ ํ๋ค.
- url ๊ธฐ๋ณธํ์ ๋ฌธ์์ด๋ก ์ ๋ ฅํ๊ณ , ์์ ํญ๋ชฉ๋ค์ { } ์์ ๋ฃ์ด ํฌ๋งทํ ํ๋ค.
- req ์ url๋ก๋ถํฐ xml ๋ฐ์ดํฐ ์์ฒญํ๊ณ , req.text๋ก ์ด๋ฅผ ํ์ธํ๋ค.
import requests
import pandas as pd
serviceKey = "์ธ์ฆํค"
pageNo = 1 # ํ์ด์ง ๋ฒํธ
numOfRows = 1000 # ํ ํ์ด์ง ๊ฒฐ๊ณผ์
LAWD_CD = 11560 # ์ง์ญ์ฝ๋
DEAL_YMD = 202307 # ๊ณ์ฝ์
url = f'http://openapi.molit.go.kr/OpenAPI_ToolInstallPackage/service/rest/RTMSOBJSvc/getRTMSDataSvcAptTradeDev?serviceKey={serviceKey}&pageNo={pageNo}&numOfRows=10&LAWD_CD={LAWD_CD}&DEAL_YMD={DEAL_YMD}'
req = requests.get(url)
req.text
๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๊ฐ๋ค
XML -> JSON ์ผ๋ก
์ข ๋ ๋ณด๊ธฐ ์ฝ๊ฒ ์ด๋ฅผ ๊ฐ๊ณตํ๊ธฐ ์ํด json ํ์์ผ๋ก ๋ง๋ ๋ค์, pandas dataframe์ผ๋ก ๋ง๋ค๊ฒ์ด๋ค.
๋จผ์ , json์ผ๋ก ๋ง๋ค๊ธฐ ์ํด ๋ค์์ ์์ฑํ๋ค.
- xmltodict ๋ผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์นํ ๋ค์
- xmldict๋ฅผ Import
!pip install xmltodict
import xmltodict
- xmldict๋ฅผ ์ฌ์ฉํ์ฌ ์์ ๋ฐ์์จ req.text๋ผ๋ XML ๋ฐ์ดํฐ๋ฅผ ํ์ฑํ๋ค >> data_dict ์ ์ ์ฅ
data_dict = xmltodict.parse(req.text)
data_dict
์ด๋ ๊ฒ json ํ์์ผ๋ก ์น๊ทผํ(?) ๋์ ๋๋ฆฌ ํํ๊ฐ ๋ํ๋๋ค.
JSON -> DataFrame ์ผ๋ก
- ๋ง์ง๋ง์ผ๋ก json๋ฐ์ดํฐ๋ฅผ dataframe์ผ๋ก ๋ฐ๊พธ์ด๋ณด์.
- ์์ ๊ฒฐ๊ณผ๊ฐ์์ ๊ตฌ์ฒด์ ์ผ๋ก ํ์ธํ๊ณ ์ถ์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ์ํด, ๋ค์๊ณผ ๊ฐ์ด ๋์ ๋๋ฆฌ์ ๊ตฌ์กฐ๋ฅผ ๋ฐ๋ผ ์ํ๋ ํค ๊ฐ์ ์ค์ ํ๋ค
pd.DataFrame(data_dict['response']['body']['items']['item'])
โญ ์ด๋ ๊ฒ ํ ๋ชจ์์ผ๋ก ๊น๋ํ ๋ฐ์ดํฐํ๋ ์์ด ๋ํ๋๋ฉด ์์ฑ์ด๋ค
728x90
'Python > Data Visualization' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Plotly] ๊ทธ๋ํ ์์ ๊ฐ๋ฅํ ์ต์ ๋ณด๊ธฐ (0) | 2023.08.10 |
---|---|
[Plotly] ์์ํ๊ธฐ : ๋ง๋๊ทธ๋ํ ์์ (0) | 2023.08.10 |
[API ํ์ฉ] xml ํ์ผ ๋ฐ์ดํฐํ๋ ์์ผ๋ก ๋ณํ (read_xml) (0) | 2023.08.07 |
์๊ด๊ด๊ณ๋ฅผ ํ์ธํ๋ ๊ทธ๋ํ - Heatmap & Scatter ๊ทธ๋ํ (0) | 2023.03.12 |
[ํ์์ ๋ฐ์ดํฐ ๋ถ์] ํ ์ด๋ธ ๋ฐ์ดํฐ์ ์๊ณ์ด ๋ฐ์ดํฐ (0) | 2023.03.12 |