slide-image

참고 서적 : 파이썬을 이용한 머신러닝, 딥러닝 실전 개발 입문 (서적 주소)



이전 포스팅에서 기술하던 사진 다운로드에 이어

xml 또는 html등 의 텍스트 기반 데이터 다운로드를 써보겠다.

 

02.웹에서 데이터 추출하기

#IP 확인 API로 접근해서 결과 출력하기

import urllib.request

#데이터 읽어 들이기
url = "http://api.aoikujira.com/ip/json"
res = urllib.request.urlopen(url)
data = res.read()

#바이너리를 문자열로 변환하기
text = data.decode("UTF-8")
print(text)

만약 FTP상의 리소스를 추출하고 싶다면 ftp://로 변경하면 된다.

 

 

 

  • 매개변수를 추가해 요청을 전송하는 방법

*기상청의 RSS 서비스 사용 예제

import urllib.request
import urllib.parse

API = "http://www.weather.go.kr/weather/forecast/mid-term-rss3.jsp"

#매개변수를 URL 인코딩
#딕셔너리(dict) 자료형의 매개변수를 URL인코딩
values = {
    'stnId':108
}

params = urllib.parse.urlencode(values)
#요청 전용 URL을 생성
url = API + "?" + params
print("url = " + url)

data = urllib.request.urlopen(url).read()
text = data.decode("UTF-8")
print(text)

[output]

  • GET 요청으로 매개변수 전송 시 url은 다음과 같다.
http://example.com?key1=v1&key2=v2...

 

 

 

  • 매개변수를 command에서 지정하기
  • 하지만 위와 같은 방식은 다른 지역의 정보 조회시에는 소스를 수정해야 함. 
  • 실행 시 지역번호만 적어주면 받아오는 프로그램을 작성해보자
import sys
import urllib.request as req
import urllib.parse as parse

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

API = "http://www.weather.go.kr/weather/forecast/mid-term-rss3.jsp"

#매개변수를 URL 인코딩
values = {
    'stnId': regionNumber
}

params = parse.urlencode(values)
#요청 전용 URL을 생성
url = API + "?" + params
print("url = " + url)

data = req.urlopen(url).read()
text = data.decode("UTF-8")
print(text)
  • 실행방법

python 파일명.py 108  #108은 지역번호

python 파일명.py 109 ..

  • command 에서 입력한 매개변수를 읽기 위해서 sys 모듈을 사용
  • command 매개변수는 sys.argv의 리스트 형태로, sys.argv[0]은 스크립트의 이름, sys.argv[1]부터는 입력한 매개변수가 들어온다.
  • 해당 매개변수에 따른 rss 를 호출하여 결과 값을 출력