뭉지(moonz)
작은 발자국들의 위대한 여정
뭉지(moonz)
  • All (202)
    • Test Code (4)
    • 백엔드 개발하며 작성한 (27)
      • Spring (17)
      • 데이터베이스 (7)
      • 기억할 내용 (3)
    • 언어 (53)
      • Java (25)
      • node.js (7)
      • Python (21)
    • 클라우드 (6)
    • Algorithm & Data Structure (51)
      • 개념 (15)
      • 문제 풀이 (36)
    • 유용한 모든 것 (16)
    • monologue (7)
      • 업무 노트 (1)
      • 관리 로그 (0)
      • 내 이야기 공책 (6)
    • Project (2)
    • TroubleShooting (8)
    • 지식 (18)
      • Machine Learning (6)
      • Review (7)
      • Web (5)
    • Computer Science (5)

블로그 메뉴

  • 홈
  • 태그

인기 글

최근 글

최근 댓글

전체 방문자
오늘
어제

티스토리

hELLO · Designed By 정상우.
뭉지(moonz)

작은 발자국들의 위대한 여정

기상청 날씨 데이터 cmd창에서 직접 불러오기
언어/Python

기상청 날씨 데이터 cmd창에서 직접 불러오기

2020. 9. 5. 15:01
반응형

이전 글처럼 데이터를 불러올 경우, 다른 지역의 날씨를 알아보려고 할때마다 메모장을 고쳐줘야하는 불편함이 있다.

그래서 파이썬 코드 수정 없이 cmd창에서 'python ex03.py 108' 과 같이 입력하면 바로 해당 지역날씨를 불러오는 방법에 대해 공부하겠다.

 

sys 모듈

---------------------------------------------------------------------------------------------------------------------------------

 

▶위의 명령줄에서 108을 명령줄 인수(매개변수) 라고 한다.

사실 'python ex03.py 108' 에서 명령줄 인수는 ex03.py 와 108 두 개이다. (python은 명령줄 인수 X)

 

▶이러한 명령줄 인수는 파이썬의 sys모듈을 통해 받아들이는 것이다.

즉, 파이썬에서 매개변수를 받으려면 sys모듈의 argv(argument value) 리스트형태를 불러와야한다. (sys.argv)

 

▶argv 리스트에 접근하는 방식은 index로 접근한다.(argv[0])

ex) argv[0] == ex03.py  argv[1] == 108

 

▶리스트 길이(==명령줄 갯수) 파악 방법 ; len(sys.argv)

 

이제 메모장에서 직접 입력해보자!

파이썬 코드 - (1) url주소 지정

---------------------------------------------------------------------------------------------------------------------------------

더보기

[복사용]

import sys	# sys 라이브러리로 argv 리스트 이용.
import urllib.request as req	#웹상 데이터를 불러오기위한 모듈.
import urllib.parse as parse	#url 인코딩 모듈

# 명령줄 인수가 제대로 입력되었는지 확인
if len(sys.argv) <= 1 :	#리스트 길이가 1이하이면 인수가 다 입력되지 않았다는 것.
	print("사용법: python 인수1 인수2")	#오류메시지 출력
    sys.exit()	#프로그램 종료. (뒤의 명령문을 수행하지 않고 프로그램을 빠져나가서 다시 명령을 수행하도록 함.)
    
regionCode = sys.argv[1]	#지역 코드(에 인수2를 저장)
rssUrl ="http://www.kma.go.kr/weather/forecast/mid-term-rss3.jsp"
values = {
	'stnId':regionCode
}

params = parse.urlencode(values)	#인코딩 ; 문자열을 바이트단위로 변환하여 저장
url = rssUrl + "?" + params	#지역변수를 출력하는 url
print("utl=",url)

▶import문에서 as는 alias의 줄임말로, urllib.request를 req로 사용한다. urllib.parse를 parse로 사용한다.(별칭)

▶rssUrl은 전국날씨 출력하는 rss서비스 url이고,

▶url은 지역날씨 출력하는 rss서비스 url이다.

▶params는 문자열인 regionCode(109)를 바이트단위로 변환하는 인코딩 작업의 결과변수. 즉 바이트단위로 저장됨.

(2) url의 데이터 다운

---------------------------------------------------------------------------------------------------------------------------------

더보기

[복사용]

# RSS 데이터 다운로드
data = req.urlopen(url).read()	#url주소를 메모리상에 두고 그것을 읽어서 data변수에 저장
text = data.decode()	#바이트단위인 data를 디코딩한 문자열을 text변수에 저장.
print(text)

▶ 메모장을 ex04.py로 저장하고 cmd창에 입력해보면 결과값이 나온다.

if) 만약 인수2를 적지 않는다면?

사용법 메시지가 출력되고 프로그램이 종료된다.

 

 

 

 

 

파이썬의 urllib 라이브러리를 이용해서 데이터를 가져오는 것은 웹 스크레이핑의 기초!!!이므로 알아둬야 한다.

 

다음 글에서는

쓸데없는 태그들을 날리는 것 (데이터를 정제하는 과정) 을 beautiful Soup라는 파이썬에서 제공하는 라이브러리를 가지고 해볼 것이다.

반응형
저작자표시 (새창열림)

'언어 > Python' 카테고리의 다른 글

라즈베리파이의 GPIO  (0) 2020.11.06
Beautiful Soup 사용하여 html 분석하기  (0) 2020.09.07
기상청 날씨 데이터불러오기  (0) 2020.09.05
파이썬을 이용한 웹데이터 다운로드하기2_urlopen() 함수  (0) 2020.08.28
파이썬을 이용한 웹데이터 다운로드하기1_urlretrieve()함수  (0) 2020.08.28
    '언어/Python' 카테고리의 다른 글
    • 라즈베리파이의 GPIO
    • Beautiful Soup 사용하여 html 분석하기
    • 기상청 날씨 데이터불러오기
    • 파이썬을 이용한 웹데이터 다운로드하기2_urlopen() 함수
    뭉지(moonz)
    뭉지(moonz)
    제가 깨달은 것을 정리하는 공간입니다. 🧡

    티스토리툴바