728x90
반응형
참고
이전글 [Python 실습 준비] 오픈API 활용하기(1) 오픈 API 요청키 생성
목차
1. Python 환경에서 불러오기
2. XML
3. JSON
4. DataFrame 변환
반응형
1. Python에서 불러오기
# 라이브러리 가져오기
import lxml
import requests
from bs4 import BeautifulSoup
import pandas as pd
import time
import math
service_key = '인증키 입력하기' # 인증키
url = f'http://openapi.seoul.go.kr:8088/{service_key}/xml/tbLnOpendataRtmsV/1/5/' # 인증키 포함 주소
2. XML
# XML 생성하기
req = requests.get(url)
req.content
soup = BeautifulSoup(req.content, "lxml") # XML 생성
# 데이터 가공
# xml 형태를 pandas dataframe으로 만들기
years = soup.find_all('acc_year') # 접수년월
sgg_cds = soup.find_all('sgg_cd') # 자치구코드
sgg_nms = soup.find_all('sgg_nm') # 자치구명
bjdong_cds = soup.find_all('bjdong_cd') # 법정동코드
bjdong_nms = soup.find_all('bjdong_nm') # 법정동명
land_gbns = soup.find_all('land_gbn') # 지번구분
land_gbn_nms = soup.find_all('land_gbn_nm') # 지번구분명
land_gbn_nms = soup.find_all('land_gbn_nm') # 지번구분명
bonbeons = soup.find_all('bonbeon') # 본번
bubeons = soup.find_all('bubeon') # 부번
bldg_nms = soup.find_all('bldg_nm') # 건물명
deal_ymds = soup.find_all('deal_ymd') # 계약일
obj_amts = soup.find_all('obj_amt') # 물건금액(만원)
bldg_areas = soup.find_all('bldg_area') # 건물면적(㎡)
tot_areas = soup.find_all('tot_area') # 토지면적(㎡)
floors = soup.find_all('floor') # 층
right_gbns = soup.find_all('right_gbn') # 권리구분
cntl_ymds = soup.find_all('cntl_ymd') # 취소일
build_years = soup.find_all('build_years') # 건축년도
house_types = soup.find_all('house_type') # 건물용도
req_gbn = soup.find_all('req_gbn') # 신고구분
rdealer_lawdnms = soup.find_all('rdealer_lawdnm') # 신고한 개업공인중개사 시군구명
# 반복문 활용
year_list = []
sgg_cd_list = []
bldg_nm_list = []
obj_amt_list = []
house_type_list = []
rdealer_lawdnm_list = []
for year, sgg_cd, bldg_nm, obj_amt, house_type, rdealer_lawdnm in zip(years, sgg_cds, bldg_nms, obj_amts, house_types, rdealer_lawdnms):
year_list.append(year.get_text())
sgg_cd_list.append(sgg_cd.get_text())
bldg_nm_list.append(bldg_nm.get_text())
obj_amt_list.append(obj_amt.get_text())
house_type_list.append(house_type.get_text())
rdealer_lawdnm_list.append(rdealer_lawdnm.get_text())
df = pd.DataFrame({
"acc_year": year_list,
"sgg_cd": sgg_cd_list,
"bldg_nm" : bldg_nm_list,
"obj_amt": obj_amt_list,
"house_type" : house_type_list,
"rdealer_lawdnm": rdealer_lawdnm_list
})
728x90
3. JSON
# JSON 형태로 바꾸기
req = requests.get(url)
content = req.json()
3. DataFrame
# JSON을 데이터프레임으로 전환
row = content['tbLnOpendataRtmsV']['row']
df = pd.DataFrame(row)
# 참고
https://dschloe.github.io/python/2023/01/seoul_real_estate_01/
728x90
반응형
'Python > Crawling' 카테고리의 다른 글
[Python Crawling] #1 Web Crawling의 이해와 준비 (0) | 2023.05.26 |
---|---|
[Python 실습 준비] 오픈API 활용하기(1) 오픈 API 요청키 생성 (0) | 2023.05.18 |