크롤링과 스크래핑
파이썬은 웹 사이트에 있는 데이터를 추출하기 위해 'urllib' 라이브러리를 사용한다.
이 라이브러리를 이용하면 HTTP 또는 FTP를 사용해 데이터를 다운로드 할 수 있다.
urllib는 URL을 다루는 모듈을 모아 놓은 패키지라 할 수 있다.
파일 저장
- urllib()로 바로 저장
# PNG 파일 다운로드
# urllib.request.urlretrieve(url, savename)
# 파일을 함수로
import urllib.request
url = "http://uta.pw/shodou/img/28/214.png"
savename = "test.png"
urllib.request.urlretrieve(url, savename)
print("저장~")
파일저장 2
- 파일(데이터)을 파이썬 메모리 위에 올렸다가 저장
- urlopen()
import urllib.request
url = "http://uta.pw/shodou/img/28/214.png"
savename = "test.png"
# 다운로드
# PNG 파일의 resource를 열고 -> read() 메소드로 데이터를 읽는다.
mem = urllib.request.urlopen(url).read()
# 파일로 저장
# -> 1. 파일을 여는 open() 함수로 파일을 여는데,
# -> 2. 파일 모드를 나타내는 mode="wb"로 파일을 연다. w는 쓰기, b는 바이너리 모드를 의미한다
# -> 3.
with open(savename, mode="wb") as f :
f.write(mem)
print("저장되었습니다!")
웸에서 데이터 추출하기
클라이언트 접속 정보 출력
# IP 확인 API로 접근해서 결과 출력하기
import urllib.request
url = "http://api.aoikujira.com/ip/ini"
res = urllib.request.urlopen(url)
data = res.read() # read로 읽어들인 데이터는 바이너리이다
# 바이너리를 문자열로 변환하기
text = data.decode("utf-8")
print(text)
실행결과
C:\Python\Python36\python.exe C:/ch1/download-ip.py
[ip]
API_URI=http://api.aoikujira.com/ip/get.php
REMOTE_ADDR=211.45.60.5
REMOTE_HOST=211.45.60.5
REMOTE_PORT=38189
HTTP_HOST=api.aoikujira.com
HTTP_USER_AGENT=Python-urllib/3.6
HTTP_ACCEPT_LANGUAGE=
HTTP_ACCEPT_CHARSET=
SERVER_PORT=80
FORMAT=ini