Programming/AI & 머신러닝

[머신러닝] 원하는 정보를 명령창에서 지정하여 정보수집 | urlencode()

MOONCO 2021. 1. 26. 20:24

* 이 포스팅은 이전 포스팅과 이어집니다.

 

이전에는 프로그램의 코드내에, 원하는 정보를 입력하여야만 했는데

이보다 더 좋은 방법이 있습니다.

바로 명령줄에서 정보를 입력받는 방법입니다.

"sys.argv"

명령줄에서 정보를 입력 받아올 수 있습니다.

#!/usr/bin/env python

# 라이브러리 불러오기
import sys
import urllib.request as req
import urllib.parse as parse

# 명령줄 매개변수 추출
if len(sys.argv) <= 1:
    print("USAGE: download-forcast-argv <Region Number>")
    sys.exit()
regionNumber = sys.argv[1]

# 매개변수를 URL 인코딩합니다.
API = "http://www.kma.go.kr/weather/forecast/mid-term-rss3.jsp"
values = {
    'stnId': regionNumber
}
params = parse.urlencode(values)
url = API + "?" params
print("url=", url)

# 다운로드 합니다.
data = req.urlopen(url).read()
text = data.decode("utf-8")
print(text)

" import sys "

sys 라이브러리를 가져옵니다.

 

" import urllib.request as req "

urllib라이브러리, request모듈을 req라는 이름을 붙여 가져옵니다.

 

" import urllib.parse as parse "

urllib라이브러리, request모듈을 parse라는 이름을 붙여 가져옵니다.

 

" if len(sys.argv) <=1: "

"     print("USAGE: download-forcast-argv <Region Number>") "

"     sys.exit()"

만약에 명령줄에 입력된 정보가 1이하일때 ( 필요한 정보가 입력되지 않았을때 )

제대로된 사용방법을 화면에 출력하고,

프로그램을 종료합니다.

 

" regionNumber = sys.argv[1] "

입력된 정보를 받아, regionNumber라는 공간(변수)에 저장합니다.

 

" API = "주소" "

" values = { 'stnId' : regionNumber } "

주소를 사용할 공간 API와, URL에 입력할 딕셔너리 {} values를 만들어줍니다.

 

" params = parse.urlencode(values) "

values를 인코딩해 컴퓨터가 이해할 수 있는 언어로 바꿔줍니다.

 

" url = API + "?" + params "

url을 매개변수를 적용할 수 있는 형태로 만들어줍니다.

 

" print("url=", url) "

만들어진 최종 url을 화면에 출력해 확인합니다.

 

" data = req.urlopen(url).read() "

urlopen()으로 url 주소에 접근해서, 바이너리 형태로 read() data에 저장합니다.

 

" text = data.decode("utf-8") "

decode()로 data를 utf-8 텍스트 형식으로 바꿔 text에 저장합니다.

 

"print(text)"

가공된 정보를 화면에 출력합니다.

 

명령어 사용법

 

실행결과

 

이제 원하는 지역코드를 명령창에 입력하여,

코드를 직접열어 수정하는 일 없이

날씨 정보를 확인 할 수 있습니다!

 

 

반응형