강좌/RaspberryPI 활용

날씨 예보문 가져오기

acidpop 2015. 10. 21. 10:20
반응형

curl, iconv, hxselect, head, sed 를 이용하여 기상 예보를 받아 오는 방법입니다.


먼저 필요한 Utility 를 설치 해야 합니다.


sudo apt-get install html-xml-utils curl



전국 오늘 날씨 예보 조회 하기


 

curl -s "http://www.kma.go.kr/weather/forecast/summary.jsp?stnId=108&x=14&y=11" | iconv -f euc-kr -t utf-8 | hxselect 'table.table_announcementtime' | hxselect 'td' | hxselect -s '\n\n' -c 'p' | head -n 1 | sed 's/<br\/>/\n/g'


위 명령을 Shell 상에서 그대로 실행 하면 다음과 같은 결과가 출력 됩니다.


 중국 북동지방에 위치한 고기압의 영향을 받겠습니다.

전국이 대체로 맑겠으나, 동해안은 오후부터 구름많겠습니다.

* 낮동안 연무나 박무(옅은 안개)가 끼는 곳이 있겠으니, 교통안전과 건강관리에 유의하시기 바랍니다.

낮 최고기온은 21도에서 27도로 어제와 비슷하겠습니다.

* 당분간 내륙을 중심으로 낮과 밤의 기온차가 10도 이상 크겠으니, 건강관리에 유의하시기 바랍니다.

바다의 물결은 전해상에서 0.5~2.5m로 일겠습니다.

* 서해상에는 안개가 끼는 곳이 있겠으니, 항해나 조업하는 선박은 유의하시기 바랍니다.

 



각 지역별 예보 url 은 다음과 같습니다.


# 날씨 요약
# 전국     http://www.kma.go.kr/weather/forecast/summary.jsp?stnId=108&x=14&y=11
# 서울,인천,경기도  http://www.kma.go.kr/weather/forecast/summary.jsp?stnId=109&x=23&y=5
# 부산,울산,경상남도 http://www.kma.go.kr/weather/forecast/summary.jsp?stnId=159&x=32&y=14
# 대구,경상북도   http://www.kma.go.kr/weather/forecast/summary.jsp?stnId=143&x=15&y=16
# 광주,전라남도   http://www.kma.go.kr/weather/forecast/summary.jsp?stnId=156&x=19&y=18
# 전라북도    http://www.kma.go.kr/weather/forecast/summary.jsp?stnId=146&x=30&y=2
# 대전,세종,충청남도 http://www.kma.go.kr/weather/forecast/summary.jsp?stnId=133&x=31&y=16
# 충청북도    http://www.kma.go.kr/weather/forecast/summary.jsp?stnId=131&x=36&y=9
# 강원도    http://www.kma.go.kr/weather/forecast/summary.jsp?stnId=105&x=28&y=16
# 제주도    http://www.kma.go.kr/weather/forecast/summary.jsp?stnId=184&x=27&y=10


위 명령에서 url 만 원하시는걸로 변경 해서 사용하시면 됩니다.


 


만약 내일 날씨 예보를 가져오고 싶다면 다음과 같이 head 와 tail 을 이용하면 됩니다.


내일 날씨 예보

 curl -s "http://www.kma.go.kr/weather/forecast/summary.jsp?stnId=108&x=14&y=11" | iconv -f euc-kr -t utf-8 | hxselect 'table.table_announcementtime' | hxselect 'td' | hxselect -s '\n\n' -c 'p' | head -n 3 | tail -n 1 | sed 's/<br\/>/\n/g'

 


모레 날씨 예보

 curl -s "http://www.kma.go.kr/weather/forecast/summary.jsp?stnId=108&x=14&y=11" | iconv -f euc-kr -t utf-8 | hxselect 'table.table_announcementtime' | hxselect 'td' | hxselect -s '\n\n' -c 'p' | head -n 5 | tail -n 1 | sed 's/<br\/>/\n/g'







기상 예보 요약본은 RSS로 제공해 주는 곳을 못찾아서 HTML 페이지를 직접 Parsing 해서 가져오는 중입니다.


혹시 xml 또는 json 형태로 제공해 주는곳을 아시는 분은 제보 좀 부탁드려요.


그리고 HTML 파서 괜찮은 CLI Utility 가 있다면 추천 좀 부탁드려요~!