본문 바로가기
PYTHON/파이썬_라이브러리&모듈

파이썬 urllib라이브러리

by 시에라177 2022. 5. 11.

urllib라이브러리

-파이썬에서 웹의 데이터와 관련된 작업을 도와주는 라이브러리.

-내부에 총 4개의 모듈이 존재하며 그중 request 모듈을 가장 많이 사용. 사실 거의 request모듈만 쓴다.

모듈 종료 : request, error, parse, robotparser.

 

#urllib.request

-url이나 HTTP를 여는 데 사용되는 함수와 클래스가 있음.

-요청객체와 응답객체의 이름을 명확히 할 것.

-필자는 urllib.request.urlopen이나 request.get()로 서버에서 받은 응답(데이터)를 담는 객체를 응답객체라고 할 것이며

urllib.request.Request()로 만드는 요청을 담는 객체를 요청객체라고 하겠음. (정확한 용어사용인지는 잘 모르겠음)

 

#1.응답객체명 = urllib.request.urlopen(url주소 혹은 Resquest객체 둘 중 아무거나)

-웹에서 얻은 데이터에 대한 객체(응답객체)를 반환함. 

-대부분 html문서 데이터를 반환 받음. 서버에 따라 json, xml등으로도 받을 수 있음.(ex.네이버API)

-utf-8로 인코딩하여 보냄.

 

1-1.응답객체.read()

-받아온 웹페이지의 데이터를 읽어온다.(html일 수도 json포맷일 수도 xml포맷일 수도)

-받아온 데이터를 문자열 변수에 저장하는게 일반적 사용법

-응답객체.read().decode('utf-8') 응답을 디코딩해 반환하는 법

 

1-2.응답객체.status

-성공적으로 url을 열면 200 출력. 서버가 요청을 제대로 처리했다는 의미.

 

1-3.응답객체.getheaders()

-서버에 대한 정보를 리스트로 반환해주는 함수. 다양한 정보를 확인할 수 있음.

 

#2. 요청객체명 =  urllib.request.Request(url)

- Request객체를 만드는 클래스. 그냥 요청 객체를 만든다고 보면된다.

-만들어진 객체는 urllib.request.urlopen의 인자로 넣을 수 있음.

 

2-1. 요청객체명.add_header()

-요청객체에 해더 추가가능. (ex. 네이버 api같은 경우 클라이언트 id와 클라이언트 secret을 헤더를 요청객체에 담아 보내야함)

import urllib.request

url = 'https://runtimeerror44.tistory.com/'

request_form = urllib.request.Request(url)

response_form = urllib.request.urlopen(request_form)
print(response_form.status)

response_inf = response_form.read().decode('utf-8')

print(response_inf)

 

#3. urllib.request.urlretrieve(url, 파일이름)

- url에 접근하여 데이터를 로컬 컴퓨터에 저장. 이렇게 이미지 파일 저장가능. 물론 urlopen으로도 이미지 저장가능함.

import urllib.request

url = "이미지 url 주소"
file_name = '이름.확장자'

urllib.request.urlretrieve(url, file_name)

-urlopen으로 이미지 저장

import urllib

resp = urllib.request.urlopen('이미지url')

with open("이미지명.jpg", 'wb') as img_f:  //모드는 이진모드로.
  img_f.write(resp.read())