본문 바로가기

Program language/Python

파이썬 데이터 수집 : 1. Requests

반응형

 

모니터를 보며 키보드를 타이핑하는 모습

파이썬 requests로 원하는 정보만 가져오기

매일 아침 확인하는 주식 정보, 좋아하는 커뮤니티의 새 글, 특정 쇼핑몰의 가격 변동... 우리가 웹사이트에서 반복적으로 확인하는 정보는 생각보다 많습니다. 혹시 이런 정보를 얻기 위해 매번 브라우저를 열고, 즐겨찾기를 클릭하고, 페이지가 로딩되길 기다리고 있진 않으신가요?

오늘은 이런 반복적인 작업을 한번에 해결해 줄 아주 강력하고 간단한 도구, 바로 파이썬(Python)의 requests 라이브러리를 소개하려고 합니다. 이 글을 다 읽고 나면, 여러분은 더 이상 직접 웹사이트에 방문하지 않고도 원하는 데이터를 손쉽게 가져올 수 있게 될 겁니다.

 

 

1. 'requests'가 도대체 뭔가요?

requests는 파이썬으로 HTTP(웹 통신 규칙) 요청을 보낼 수 있게 해주는 라이브러리(도구 모음)입니다. "사람을 위한 HTTP"라는 슬로건을 내세울 만큼 사용법이 매우 직관적이고 간단해서, 파이썬으로 웹 데이터를 다룰 때 가장 먼저 배우고 가장 많이 사용하는 라이브러리 중 하나입니다.

우리가 브라우저 주소창에 'www.google.com'을 입력하고 엔터를 치는 행위가 바로 구글 서버에 "메인 페이지를 보여줘!"라고 요청(Request)하는 것입니다. 그러면 구글 서버는 우리에게 화면을 구성하는 코드(HTML)를 응답(Response)으로 보내주죠. requests는 이 모든 과정을 단 몇 줄의 코드로 처리해줍니다.

 

 

2. 딱 2가지만 준비하세요!

본격적으로 시작하기 전에, 딱 2가지만 준비하면 됩니다.

1) 파이썬 설치

당연히 파이썬이 설치되어 있어야 합니다. 혹시 설치하지 않으셨다면 공식 홈페이지에서 쉽게 설치할 수 있습니다.

2) requests 라이브러리 설치

파이썬만 설치해서는 requests를 바로 쓸 수 없습니다. 아래 명령어를 터미널(윈도우의 경우 '명령 프롬프트' 또는 'PowerShell')에 입력해서 라이브러리를 설치해주세요.

pip install requests

'Successfully installed...' 메시지가 보이면 성공입니다!

 

 

3. 가장 간단한 데이터 요청 (GET 요청)

이제 모든 준비가 끝났습니다. 가장 기본적인 '데이터 가져오기', 즉 GET 요청을 보내보겠습니다. 예시로 가상의 데이터를 제공하는 JSONPlaceholder 사이트를 이용해 보겠습니다.

# 1. requests 라이브러리를 불러옵니다.
import requests

# 2. 데이터를 요청할 웹사이트 주소를 변수에 저장합니다.
url = "https://jsonplaceholder.typicode.com/posts/1"

# 3. requests.get() 함수를 사용해 해당 url에 GET 요청을 보냅니다.
response = requests.get(url)

# 4. 요청이 성공했는지 확인합니다. (상태 코드 200은 성공을 의미)
if response.status_code == 200:
    print("요청 성공!")
    # 5. 응답 받은 데이터를 출력합니다.
    print("응답 데이터:")
    print(response.text)
else:
    print(f"요청 실패: 상태 코드 {response.status_code}")
잠깐! 상태 코드(status_code)가 뭔가요?
서버가 우리의 요청을 어떻게 처리했는지 알려주는 숫자 신호입니다.
  • 200: OK. 요청이 성공적으로 처리됨.
  • 404: Not Found. 요청한 페이지를 찾을 수 없음. (가장 흔하게 보는 에러죠?)
  • 500: Internal Server Error. 서버 내부에서 에러가 발생함.
그래서 코드를 짤 때 response.status_code == 200 인지 먼저 확인하는 습관을 들이는 것이 좋습니다.

 

 

4. 응답(Response) 제대로 파헤치기

위 예제에서 response 변수에는 서버가 보낸 모든 정보가 담겨있습니다. 여기서 우리가 주로 사용할 것은 .text.json() 입니다.

- response.text : 웹사이트의 HTML 코드 그대로 보기

일반적인 웹사이트(네이버, 다음 등)에 요청을 보내고 response.text를 출력하면, 우리가 '페이지 소스 보기'를 했을 때 보이는 복잡한 HTML 코드가 그대로 출력됩니다.

- response.json() : 깔끔하게 정리된 데이터(JSON) 다루기

최근 웹 서비스들은 위 예제처럼 데이터를 JSON이라는 형식으로 주고받는 경우가 많습니다. requests는 이런 JSON 데이터를 아주 쉽게 파이썬 딕셔너리(Dictionary) 형태로 변환해주는 .json() 메서드를 제공합니다.

import requests

url = "https://jsonplaceholder.typicode.com/posts/1"
response = requests.get(url)

if response.status_code == 200:
    # .json() 메서드를 사용해 응답 데이터를 딕셔너리로 변환
    data = response.json()
    
    print("데이터 타입:", type(data))
    print("---")
    
    # 이제 키(key)를 이용해 원하는 값만 쏙쏙 뽑아낼 수 있습니다.
    print("사용자 ID:", data['userId'])
    print("제목:", data['title'])
else:
    print(f"요청 실패: 상태 코드 {response.status_code}")

결과를 보세요! .text로 봤을 때보다 훨씬 깔끔하죠? 이제 우리는 data['title'] 처럼 원하는 정보만 정확히 골라내서 활용할 수 있습니다.

 

 

마치며

오늘은 파이썬 requests 라이브러리를 사용해 웹사이트의 데이터를 프로그래밍 코드로 가져오는 가장 기본적인 방법을 알아봤습니다. 단순히 정보를 가져오는 것을 넘어, 이 기술을 활용하면 정말 무궁무진한 일을 할 수 있습니다.

  • 여러 쇼핑몰의 원하는 상품 가격을 주기적으로 수집하고 비교하기
  • 커뮤니티 사이트에 특정 키워드의 새 글이 올라오면 알림 받기
  • 공공 데이터 포털의 API를 활용해 나만의 데이터 분석하기

물론 오늘 배운 내용만으로는 부족할 수 있습니다. 다음 단계는 가져온 데이터(특히 HTML)를 의미있는 정보로 가공하는 '파싱(Parsing)' 과정입니다. 이 과정에서는 보통 BeautifulSoup이라는 라이브러리가 함께 사용됩니다.

하지만 모든 시작은 오늘 배운 requests.get() 부터입니다. 직접 여러 웹사이트에 요청을 보내보며 어떤 응답이 오는지 확인하는 연습을 해보세요. 코딩의 재미는 바로 이런 작은 성공에서부터 시작되니까요!

반응형