# 부동산 정보 모으기
# 실거래가 정보 모으기
import requests
from bs4 import BeautifulSoup # bs4라는 모듈 안에 있는 BeautifulSoup를 import -> 함수를 사용할 때 모듈이름.함수이름() 식으로 표기하지 않아도 됨!
import pdb # 디버깅 패키지
url = ""
pageNo = 1
numOfRows = 1000
LAWD_CD = '11110'
DEAL_YMD = '202012'
def get_apt_info():
raw_resp = requests.get(url, params = {
'ServiceKey': Service_Key, # 왼쪽 parameter 값은 API문서에서 정해놓은 대로 사용하되(오타 시 "INVALID REQUEST PARAMETER ERROR") 오른쪽 변수이름은 맘대로 지정해도 상관 없다.
'pageNo': pageNo,
'numOfRows': numOfRows,
'LAWD_CD': LAWD_CD,
'DEAL_YMD': DEAL_YMD
})
return raw_resp.text # XML 데이터는 text 형식으로 받아야 함! (json 파일과 다름) , 일반 텍스트로 받은 뒤 XML 파서 로 따로 데이터를 뽑아야 한다.
def parse_apt_info(raw_apt_info): # XML 데이터를 별도로 Parse 해주는 함수!
keys = ['거래금액','아파트','도로명코드','년','월','일','건축년도']
soup = BeautifulSoup(raw_apt_info, 'lxml-xml')
results = []
items = soup.findAll('item') # XML 문서에서 <item> 엘리먼트만 뽑기
for item in items: # item 엘리먼트를 하나씩 반복하면서 돌아가기 (루프)
result = {}
for key in keys:
result[key] = item.find(key).text
# 데이터 전처리
result['거래금액'] = result['거래금액'].strip()
result['건축년도'] = int(result['건축년도']) # 타입 캐스팅
results.append(result) # 찾은 result 값을 results 리스트에 추가
# results = [{...},{...},...]
return results
raw_apt_info = get_apt_info()
parsed_apt_info = parse_apt_info(raw_apt_info)
print(parsed_apt_info)
# pdb.set_trace()


'Python > 패스트캠퍼스(테크보이 워니)' 카테고리의 다른 글
UnitTest, TDD (0) | 2022.06.04 |
---|---|
JSON 과 XML (0) | 2022.04.10 |
파이썬 API 사용 (0) | 2022.04.10 |
파이썬 모듈/패키지 (0) | 2022.04.07 |
파이썬 상속(클래스, 오브젝트) (0) | 2022.04.04 |