[Python] 1. 크롤링(2)
2019. 7. 11. 20:18
참고 서적 : 파이썬을 이용한 머신러닝, 딥러닝 실전 개발 입문 (서적 주소)
이전 포스팅에서 기술하던 사진 다운로드에 이어
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 를 호출하여 결과 값을 출력
'Dev Study > BigData' 카테고리의 다른 글
[Python] 2. 스크래핑(1) (0) | 2019.07.13 |
---|---|
[Hadoop] HDFS 개괄-번역 작업 (0) | 2019.07.12 |
[Python] 1. 크롤링(1) (0) | 2019.07.09 |
3. 빅데이터 배치 분석 및 대화형 질의(2) - 대화형 질의 (0) | 2019.04.18 |
3. 빅데이터 배치 분석 및 대화형 질의(1) - 배치분석 (0) | 2019.04.18 |