XML 데이터 다루기
XML 데이터 파싱
from bs4 import BeautifulSoup
import urllib.request as req
import os.path
url = "http://www.kma.go.kr/weather/forecast/mid-term-rss3.jsp?stnId=108"
savename = "./forecast.xml"
if not os.path.exists(savename):
req.urlretrieve(url, savename)
파싱
xml = open(savename,'r',encoding='utf-8').read()
soup = BeautifulSoup(xml, 'html.parser')
지역확인
info ={}
for location in soup.find_all("location"): # xml 은 selector보다 find가 유용함
loc = location.find('city').string
# print(loc)
weather = location.find_all('tmn')
# print(weather)
if not (loc in info):
info[loc] = []
for tmn in weather:
info[loc].append(tmn.string)
print(info)
{'서울': ['22', '22', '22', '22', '22', '22', '23', '23', '23', '23', '23', '23', '22'], '인천': ['20', '20', '22', '22', '22', '22', '22', '22', '22', '22', '21', '22', '21'], '수원': ['21', '21', '22', '22', '22', '22', '22', '22', '22', '22', '22', '22', '21'], '파주': ['19', '19', '21', '21', '21', '21', '21', '21', '21', '21', '21', '21', '20'], '춘천': ['21', '21', '21', '21', '22', '22', '22', '22', '22', '22', '22', '22', '21'], '원주': ['21', '21', '22', '22', '22', '22', '22', '22', '22', '22', '22', '22', '21'], '강릉': ['22', '22', '22', '22', '22', '22', '22', '22', '23', '23', '22', '21', '22'], '대전': ['23', '23', '23', '23', '23', '23', '22', '22', '22', '22', '22', '22', '22'], '세종': ['22', '22', '23', '23', '23', '23', '21', '21', '21', '21', '21', '21', '21'], '홍성': ['22', '22', '23', '23', '23', '23', '21', '21', '21', '21', '21', '21', '21'], '청주': ['23', '23', '23', '23', '23', '23', '23', '23', '24', '24', '23', '23', '23'], '광주': ['22', '22', '23', '23', '23', '23', '23', '23', '23', '23', '23', '23', '23'], '목포': ['22', '22', '22', '22', '22', '22', '22', '22', '23', '23', '23', '22', '22'], '여수': ['22', '22', '22', '22', '22', '22', '22', '22', '22', '22', '22', '22', '22'], '전주': ['23', '23', '22', '22', '23', '23', '23', '23', '22', '22', '22', '22', '22'], '군산': ['22', '22', '22', '22', '22', '22', '22', '22', '21', '21', '21', '21', '21'], '부산': ['22', '22', '22', '22', '22', '22', '22', '22', '22', '22', '23', '22', '22'], '울산': ['22', '22', '22', '22', '22', '22', '22', '22', '23', '23', '23', '22', '22'], '창원': ['22', '22', '22', '22', '22', '22', '22', '22', '22', '22', '22', '22', '22'], '대구': ['22', '22', '22', '22', '22', '22', '22', '22', '23', '23', '23', '22', '22'], '안동': ['21', '21', '21', '21', '21', '21', '21', '21', '21', '21', '22', '22', '22'], '포항': ['23', '23', '23', '23', '23', '23', '23', '23', '23', '23', '23', '23', '23'], '제주': ['24', '24', '24', '24', '24', '24', '23', '23', '24', '24', '23', '23', '24'], '서귀포': ['23', '23', '24', '24', '24', '24', '23', '23', '24', '24', '23', '23', '24']}
각 지역별 날씨 텍스트 쓰기
with open('./forecest.txt','wt',encoding='utf-8') as f:
for loc in sorted(info.keys()):
print("+",loc)
f.write(str(loc)+'\n')
for n in info[loc]:
print("-",n)
f.write('\t'+str(n)+'\n')
+ 강릉
- 22
- 22
- 22
- 22
- 22
- 22
- 22
- 22
- 23
- 23
- 22
- 21
- 22
+ 광주
- 22
- 22
- 23
- 23
- 23
- 23
- 23
- 23
- 23
- 23
- 23
- 23
- 23
+ 군산
- 22
- 22
- 22
- 22
- 22
- 22
- 22
- 22
- 21
- 21
- 21
- 21
- 21
+ 대구
- 22
- 22
- 22
- 22
- 22
- 22
- 22
- 22
- 23
- 23
- 23
- 22
- 22
+ 대전
- 23
- 23
- 23
- 23
- 23
- 23
- 22
- 22
- 22
- 22
- 22
- 22
- 22
+ 목포
- 22
- 22
- 22
- 22
- 22
- 22
- 22
- 22
- 23
- 23
- 23
- 22
- 22
+ 부산
- 22
- 22
- 22
- 22
- 22
- 22
- 22
- 22
- 22
- 22
- 23
- 22
- 22
+ 서귀포
- 23
- 23
- 24
- 24
- 24
- 24
- 23
- 23
- 24
- 24
- 23
- 23
- 24
+ 서울
- 22
- 22
- 22
- 22
- 22
- 22
- 23
- 23
- 23
- 23
- 23
- 23
- 22
+ 세종
- 22
- 22
- 23
- 23
- 23
- 23
- 21
- 21
- 21
- 21
- 21
- 21
- 21
+ 수원
- 21
- 21
- 22
- 22
- 22
- 22
- 22
- 22
- 22
- 22
- 22
- 22
- 21
+ 안동
- 21
- 21
- 21
- 21
- 21
- 21
- 21
- 21
- 21
- 21
- 22
- 22
- 22
+ 여수
- 22
- 22
- 22
- 22
- 22
- 22
- 22
- 22
- 22
- 22
- 22
- 22
- 22
+ 울산
- 22
- 22
- 22
- 22
- 22
- 22
- 22
- 22
- 23
- 23
- 23
- 22
- 22
+ 원주
- 21
- 21
- 22
- 22
- 22
- 22
- 22
- 22
- 22
- 22
- 22
- 22
- 21
+ 인천
- 20
- 20
- 22
- 22
- 22
- 22
- 22
- 22
- 22
- 22
- 21
- 22
- 21
+ 전주
- 23
- 23
- 22
- 22
- 23
- 23
- 23
- 23
- 22
- 22
- 22
- 22
- 22
+ 제주
- 24
- 24
- 24
- 24
- 24
- 24
- 23
- 23
- 24
- 24
- 23
- 23
- 24
+ 창원
- 22
- 22
- 22
- 22
- 22
- 22
- 22
- 22
- 22
- 22
- 22
- 22
- 22
+ 청주
- 23
- 23
- 23
- 23
- 23
- 23
- 23
- 23
- 24
- 24
- 23
- 23
- 23
+ 춘천
- 21
- 21
- 21
- 21
- 22
- 22
- 22
- 22
- 22
- 22
- 22
- 22
- 21
+ 파주
- 19
- 19
- 21
- 21
- 21
- 21
- 21
- 21
- 21
- 21
- 21
- 21
- 20
+ 포항
- 23
- 23
- 23
- 23
- 23
- 23
- 23
- 23
- 23
- 23
- 23
- 23
- 23
+ 홍성
- 22
- 22
- 23
- 23
- 23
- 23
- 21
- 21
- 21
- 21
- 21
- 21
- 21
Leave a Comment