url 정보를 세팅하고 이에 대해서 request 요청하면 응답 정보를 주는데
http://openapi.molit.go.kr:8081/OpenAPI_ToolInstallPackage/service/rest/RTMSOBJSvc/getRTMSDataSvcAptTrade?LAWD_CD=11440&DEAL_YMD=201801&serviceKey=###SERVICE_KEY###
얼마전에 수정이 있었는지
응답되는 정보가 변경되었습니다.
req = urllib.request.Request(request_url)
try:
res = urllib.request.urlopen(req)
except UnicodeEncodeError:
print('[OpenAPI] UnicodeEncodeError')
return
data = res.read().decode('utf-8')
soup = BeautifulSoup(data, 'html.parser')
if (soup.resultcode.string != '00'):
print('[OpenAPI] ', soup.resultmsg.string)
return
items = soup.findAll('item')
print(items)
가져온 정보를 보니 주석과 <, > 정보들이 섞여 있었습니다.
<item><거래금액> 83,000<!--거래금액--><
건축년도>2005<!--건축년도--><년>2018<!--년--><
법정동> 상암동<!--법정동--><아파트>상암월드컵파크6단지<!--아파트--><
월>1<!--월--><일>11~20<!--일--><전용면적>104.32<!--전용면적--><
지번>1689<!--지번--><지역코드>11440<!--지역코드--><층>6<!--층--></item>
기존 코드를 수정해서 text 정보만 가져왔습니다.
item = item.text
HTML 태그들이 없어졌습니다.
<거래금액> 83,000<건축년도>2005<년>2018<법정동> 상암동<아파트>상암월드컵파크6단지<월>1<일>11~20<전용면적>104.32<지번>1689<지역코드>11440<층>6
이걸 다시 파싱하려니 정규표현식을 사용해야 했습니다.
결과만 보면 간단합니다.
split_item = re.split('<.*?>', item)
이렇게 하고나니 List형으로 잘 분리합니다.
['', ' 83,000', '2005', '2018', ' 상암동', '상암월드컵파크6단지',
'1', '11~20', '104.32', '1689', '11440', '6']
'Language > PYTHON' 카테고리의 다른 글
python3 newspaper 라이브러리로 키워드 뽑아내기 (0) | 2018.05.12 |
---|---|
[Django] SMTPAuthenticationError 발생 문제 (1) | 2018.02.27 |
OPENAPI로 국토부 실거래가 조회할 때 python으로 정규식 사용해서 파싱하기 (20180130) (1) | 2018.01.30 |
Python3로 naver 카페에 글쓰기 (0) | 2017.12.27 |
Naver open api 카페 한글 깨짐 현상 (Python3) (0) | 2017.09.05 |
[라즈베리파이3] 조도센서로 값 받아서 서버의 DB로 데이터 전송해서 저장하기 (0) | 2017.04.21 |
-
이재성 2019.10.14 00:11
비슷한 문제를 겪고 있는데 몇일째 삽질을해도 방법을 못찾겠어요ㅜ.ㅜ 팁 좀 부탁드립니다.
import requests
from bs4 import BeautifulSoup
import pandas as pd
url = "http://openapi.molit.go.kr:8081/OpenAPI_ToolInstallPackage/service/rest/RTMSOBJSvc/getRTMSDataSvcAptTrade?serviceKey=KrKzQ4sxQDVnTpdt3X3p8Hi9nZPr5KnsS%2FkKe%2FxVPYbY7cK6NfPtsvJ3%2FoSiJNlK7u2Q8geu1UmUmQQKmZ9f3w%3D%3D&LAWD_CD=11110&DEAL_YMD=201812"
response = requests.get(url)
soup = BeautifulSoup(response.content, 'html.parser')
ItemList = soup.findAll('item')
print(ItemList)
결과는
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<response>
<header>
<resultcode>
00
</resultcode>
<resultmsg>
NORMAL SERVICE.
</resultmsg>
</header>
<body>
<items>
<item>
<거래금액> 23,500
<!--거래금액-->
<건축년도>2003
<!--건축년도-->
<년>2018
<!--년-->
<법정동> 익선동
<!--법정동-->
<아파트>현대뜨레비앙
<!--아파트-->
<월>12
<!--월-->
<일>8
<!--일-->
<전용면적>36.08
<!--전용면적-->
<지번>55
<!--지번-->
<지역코드>11110
<!--지역코드-->
<층>7
<!--층-->
</item>
<item>
<거래금액> 20,000
<!--거래금액-->
<건축년도>2014
<!--건축년도-->
<년>2018
<!--년-->
<법정동> 연건동
<!--법정동-->
<아파트>이화에수풀
<!--아파트-->
<월>12
<!--월-->
<일>18
<!--일-->
<전용면적>16.98
<!--전용면적-->
<지번>195-10
<!--지번-->
<지역코드>11110
<!--지역코드-->
<층>7
<!--층-->
</item>
<item>
<거래금액> 45,500
<!--거래금액-->
<건축년도>2004
<!--건축년도-->
<년>2018
<!--년-->
<법정동> 혜화동
<!--법정동-->
<아파트>혜화훼미리
<!--아파트-->
<월>12
<!--월-->
<일>3
<!--일-->
<전용면적>60.82
<!--전용면적-->
<지번>20-12
<!--지번-->
<지역코드>11110
<!--지역코드-->
<층>7
<!--층-->
</item>
<item>
<거래금액> 26,800
<!--거래금액-->
<건축년도>2002
<!--건축년도-->
<년>2018
<!--년-->
<법정동> 창신동
<!--법정동-->
<아파트>MID그린(4동)
<!--아파트-->
<월>12
<!--월-->
<일>20
<!--일-->
<전용면적>59.55
<!--전용면적-->
<지번>601-5
<!--지번-->
<지역코드>11110
<!--지역코드-->
<층>7
<!--층-->
</item>
<item>
<거래금액> 78,700
<!--거래금액-->
<건축년도>2009
<!--건축년도-->
<년>2018
<!--년-->
<법정동> 숭인동
<!--법정동-->
<아파트>종로청계힐스테이트
<!--아파트-->
<월>12
<!--월-->
<일>21
<!--일-->
<전용면적>84.9478
<!--전용면적-->
<지번>766
<!--지번-->
<지역코드>11110
<!--지역코드-->
<층>9
<!--층-->
</item>
<item>
<거래금액> 65,000
<!--거래금액-->
<건축년도>2009
<!--건축년도-->
<년>2018
<!--년-->
<법정동> 숭인동
<!--법정동-->
<아파트>종로청계힐스테이트
<!--아파트-->
<월>12
<!--월-->
<일>26
<!--일-->
<전용면적>59.9426
<!--전용면적-->
<지번>766
<!--지번-->
<지역코드>11110
<!--지역코드-->
<층>2
<!--층-->
</item>
<item>
<거래금액> 24,300
<!--거래금액-->
<건축년도>1997
<!--건축년도-->
<년>2018
<!--년-->
<법정동> 숭인동
<!--법정동-->
<아파트>도시그린빌라트19
<!--아파트-->
<월>12
<!--월-->
<일>29
<!--일-->
<전용면적>57.45
<!--전용면적-->
<지번>181-121
<!--지번-->
<지역코드>11110
<!--지역코드-->
<층>3
<!--층-->
</item>
<item>
<거래금액> 135,500
<!--거래금액-->
<건축년도>2009
<!--건축년도-->
<년>2018
<!--년-->
<법정동> 평창동
<!--법정동-->
<아파트>롯데캐슬 로잔
<!--아파트-->
<월>12
<!--월-->
<일>15
<!--일-->
<전용면적>190.743
<!--전용면적-->
<지번>108
<!--지번-->
<지역코드>11110
<!--지역코드-->
<층>4
<!--층-->
</item>
<item>
<거래금액> 90,000
<!--거래금액-->
<건축년도>2003
<!--건축년도-->
<년>2018
<!--년-->
<법정동> 평창동
<!--법정동-->
<아파트>크래스빌
<!--아파트-->
<월>12
<!--월-->
<일>15
<!--일-->
<전용면적>187.9
<!--전용면적-->
<지번>46-1
<!--지번-->
<지역코드>11110
<!--지역코드-->
<층>4
<!--층-->
</item>
<item>
<거래금액> 41,500
<!--거래금액-->
<건축년도>2004
<!--건축년도-->
<년>2018
<!--년-->
<법정동> 평창동
<!--법정동-->
<아파트>에지앙빌
<!--아파트-->
<월>12
<!--월-->
<일>20
<!--일-->
<전용면적>110.61
<!--전용면적-->
<지번>179-5
<!--지번-->
<지역코드>11110
<!--지역코드-->
<층>2
<!--층-->
</item>
<item>
<거래금액> 133,000
<!--거래금액-->
<건축년도>2009
<!--건축년도-->
<년>2018
<!--년-->
<법정동> 평창동
<!--법정동-->
<아파트>롯데캐슬 로잔
<!--아파트-->
<월>12
<!--월-->
<일>28
<!--일-->
<전용면적>190.743
<!--전용면적-->
<지번>108
<!--지번-->
<지역코드>11110
<!--지역코드-->
<층>1
<!--층-->
</item>
</items>
<numofrows>
10
</numofrows>
<pageno>
1
</pageno>
<totalcount>
11
</totalcount>
</body>
</response>
[<item><거래금액> 23,500<!--거래금액--><건축년도>2003<!--건축년도--><년>2018<!--년--><법정동> 익선동<!--법정동--><아파트>현대뜨레비앙<!--아파트--><월>12<!--월--><일>8<!--일--><전용면적>36.08<!--전용면적--><지번>55<!--지번--><지역코드>11110<!--지역코드--><층>7<!--층--></item>, <item><거래금액> 20,000<!--거래금액--><건축년도>2014<!--건축년도--><년>2018<!--년--><법정동> 연건동<!--법정동--><아파트>이화에수풀<!--아파트--><월>12<!--월--><일>18<!--일--><전용면적>16.98<!--전용면적--><지번>195-10<!--지번--><지역코드>11110<!--지역코드--><층>7<!--층--></item>, <item><거래금액> 45,500<!--거래금액--><건축년도>2004<!--건축년도--><년>2018<!--년--><법정동> 혜화동<!--법정동--><아파트>혜화훼미리<!--아파트--><월>12<!--월--><일>3<!--일--><전용면적>60.82<!--전용면적--><지번>20-12<!--지번--><지역코드>11110<!--지역코드--><층>7<!--층--></item>, <item><거래금액> 26,800<!--거래금액--><건축년도>2002<!--건축년도--><년>2018<!--년--><법정동> 창신동<!--법정동--><아파트>MID그린(4동)<!--아파트--><월>12<!--월--><일>20<!--일--><전용면적>59.55<!--전용면적--><지번>601-5<!--지번--><지역코드>11110<!--지역코드--><층>7<!--층--></item>, <item><거래금액> 78,700<!--거래금액--><건축년도>2009<!--건축년도--><년>2018<!--년--><법정동> 숭인동<!--법정동--><아파트>종로청계힐스테이트<!--아파트--><월>12<!--월--><일>21<!--일--><전용면적>84.9478<!--전용면적--><지번>766<!--지번--><지역코드>11110<!--지역코드--><층>9<!--층--></item>, <item><거래금액> 65,000<!--거래금액--><건축년도>2009<!--건축년도--><년>2018<!--년--><법정동> 숭인동<!--법정동--><아파트>종로청계힐스테이트<!--아파트--><월>12<!--월--><일>26<!--일--><전용면적>59.9426<!--전용면적--><지번>766<!--지번--><지역코드>11110<!--지역코드--><층>2<!--층--></item>, <item><거래금액> 24,300<!--거래금액--><건축년도>1997<!--건축년도--><년>2018<!--년--><법정동> 숭인동<!--법정동--><아파트>도시그린빌라트19<!--아파트--><월>12<!--월--><일>29<!--일--><전용면적>57.45<!--전용면적--><지번>181-121<!--지번--><지역코드>11110<!--지역코드--><층>3<!--층--></item>, <item><거래금액> 135,500<!--거래금액--><건축년도>2009<!--건축년도--><년>2018<!--년--><법정동> 평창동<!--법정동--><아파트>롯데캐슬 로잔<!--아파트--><월>12<!--월--><일>15<!--일--><전용면적>190.743<!--전용면적--><지번>108<!--지번--><지역코드>11110<!--지역코드--><층>4<!--층--></item>, <item><거래금액> 90,000<!--거래금액--><건축년도>2003<!--건축년도--><년>2018<!--년--><법정동> 평창동<!--법정동--><아파트>크래스빌<!--아파트--><월>12<!--월--><일>15<!--일--><전용면적>187.9<!--전용면적--><지번>46-1<!--지번--><지역코드>11110<!--지역코드--><층>4<!--층--></item>, <item><거래금액> 41,500<!--거래금액--><건축년도>2004<!--건축년도--><년>2018<!--년--><법정동> 평창동<!--법정동--><아파트>에지앙빌<!--아파트--><월>12<!--월--><일>20<!--일--><전용면적>110.61<!--전용면적--><지번>179-5<!--지번--><지역코드>11110<!--지역코드--><층>2<!--층--></item>, <item><거래금액> 133,000<!--거래금액--><건축년도>2009<!--건축년도--><년>2018<!--년--><법정동> 평창동<!--법정동--><아파트>롯데캐슬 로잔<!--아파트--><월>12<!--월--><일>28<!--일--><전용면적>190.743<!--전용면적--><지번>108<!--지번--><지역코드>11110<!--지역코드--><층>1<!--층--></item>]
Process finished with exit code 0