기상청 xml 데이터 지역별 시간대별 최고 최저 온도 수집
import sys
import io
import urllib.request as req
from bs4 import BeautifulSoup
import os.path
# 다운로드 url
url = 'https://www.kma.go.kr/weather/forecast/mid-term-rss3.jsp?stnId=108'
savename = 'C:/forecast.xml'
if not os.path.exists(savename):
req.urlretrieve(url, savename)
# Beautifulsoup 파싱
xml = open(savename, 'r', encoding="utf-8").read()
soup = BeautifulSoup(xml, 'html.parser')
# 지역확인
info = {}
for location in soup.find_all('location'): #find 효율성 xml => 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)
#info 값 확인
print(info.keys())
print(info.values())
# 각 지역별 날씨 텍스트 쓰기
with open('C:/forecast.txt', 'wt') as f:
for loc in sorted(info.keys()): # ㄱ순 정렬
print('+', loc)
f.write(str(loc)+'\n')
for n_weather in info[loc]:
print('-',n_weather)
f.write(str(loc)+'\n')
실행결과
'BackEnd > Automation Program with Python' 카테고리의 다른 글
[파이썬으로 JSON 데이터 다루기] GitHub Repository 사이트에서 json 파싱 (0) | 2023.01.19 |
---|---|
[파이썬으로 JSON 데이터 다루기] 파이썬으로 JSON 데이터 읽고 쓰기 (0) | 2023.01.19 |
[파이썬 다양한 데이터 형식 가공] 바이너리(Binary) 데이터 vs 텍스트(Text) 데이터 (0) | 2023.01.18 |
[파이썬 고급 스크랩핑] 웹브라우저 없는 스크랩핑 및 파싱 (0) | 2023.01.17 |
[파이썬 고급 스크랩핑] requests 통신(로그인 처리) 루리웹 (0) | 2023.01.17 |