본문 바로가기
PROGRAMMING/Python

[PYTHON] 파이썬 urllib/requests 웹페이지 추출

by HYUNHP 2021. 10. 9.
반응형

안녕하세요 파이썬과 관련하여 추가적으로 필요한 정보가 있으시면,

DATA101에서 확인 가능하십니다.

감사합니다.


 

안녕하세요, Hello

python을 통해 웹페이지를 추출할 때 사용되는

1. urllib.request 모듈

2. Requests

두가지 방법에 대해서 정리하고자 합니다.

내용 및 코드는 위키북스의 '파이썬을 이용한 웹 크롤링과 스크레이핑'을 참조해서 작성했습니다.

좋은 책입니다

 


1. urllib.request 모듈

urllib.request에 포함돼 있는 urlopen() 함수에 URL을 지정하면 웹 페이지를 추출할 수 있습니다.

 

# 라이브러리 호출
from urllib.request import urlopen

 

# urlopen() 함수는 HTTPResponse 자료형의 객체를 반환
# 이 객체는 파일 객체이므로, open() 함수로 반환되는 파일 객체처럼 다루면 된다.

# 예제 URL: [영화 007 OST] Billie Eilish - No Time To Die [가사/해석] 
youtube_u = urlopen('https://www.youtube.com/watch?v=6qurGSeiIm0')

 

# urlopen() 함수의 반환값은 HTTP 응답 본문(bytes 자료형)을 추출
# HTTP 연결은 자동으로 닫히므로, 별도의 close() 함수를 호출하지 않아도 된다

type(youtube_u)
# 결과값: http.client.HTTPResponse

 

# read() 메서드로 HTTP 응답 본문(bytes 자료형)을 추출한다.
youtube_u.read()

 

 

# 상태 코드를 추출한다
youtube_u.status
# 결과값: 200

 

# HTTP 헤더의 값을 추출한다
youtube_u.getheader('Content-Type')
# 결과값: 'text/html; charset=utf-8'

2. requests

Requests는 '인간을 위한 HTTP(HTTP for Humans)' 캐치프레이즈를 내세울만큼, 쉬운 사용성을 추구하는 라이브러리입니다. 이러한 목적에 부합하게 표준 라이브러리 urllib에 비해, Requests를 사용하면 쉽게 웹 페이지 내용을 추출할 수 있습니다.

urllib는 GET, POST 요청을 처리할 때는 간단하지만, HTTP 헤더 추가 또는 Basic 인증 등의 처리는 복잡합니다. 다만, Requests 모듈을 사용하면 쉽게 가능하며, 문자 코드 변환, 압축 등을 자동으로 처리해주므로 사용에 쉽습니다.

# 최초 라이브러리 설치
pip install requests

# 라이브러리를 호출한다.
import requests

# 예제 URL: [영화 007 OST] Billie Eilish - No Time To Die [가사/해석] 

youtube_r = requests.get('https://www.youtube.com/watch?v=6qurGSeiIm0')

 

# get() 함수의 반환값은 Response 자료형
type(youtube_r)
# 결과값: requests.models.Response

 

# status_code 속성으로 HTTP 상태 코드 확인
youtube_r.status_code
# 결과값: 200

 

# headers 속성으로 HTTP 헤더를 dictionary로 추출
youtube_r.headers

 

 

# text 속성으로 str 자료형으로 decoding된 응답 본문 추출
youtube_r.text

 

# json 속성으로 JSON 형식의 응답을 decoding해서 dictionary 또는 list로 추출 가능
youtube_r.json
# 결과값: <bound method Response.json of <Response [200]>>

 

■ 마무리

python을 통해 웹페이지를 추출할 때 사용되는

1. urllib.request 모듈

2. Requests

두가지 방법에 대해서 살펴봤습니다. 감사합니다.

위 포스팅은 카카오 티스토리, 네이버 블로그에도 동일하게 업로드합니다.

반응형

댓글