[파이썬] Django를 이용한 웹 크롤링 및 스크래핑

웹 크롤링과 스크래핑은 웹 페이지에서 데이터를 추출하는 기술입니다. 이러한 기술을 이용하면 웹 상의 다양한 정보를 수집하고 분석할 수 있습니다. 웹 크롤링은 자동화된 방식으로 웹 페이지를 탐색하면서 필요한 데이터를 수집하는 반면, 스크래핑은 웹 페이지에서 특정 데이터를 추출하는 과정을 의미합니다.

Python은 웹 크롤링과 스크래핑에 매우 효과적인 언어로 알려져 있습니다. Django는 Python 기반의 웹 프레임워크로서, 웹 크롤링과 스크래핑을 쉽게 구현할 수 있는 강력한 도구입니다. 이번 글에서는 Django를 이용하여 웹 크롤링과 스크래핑을 진행하는 방법을 살펴보겠습니다.

1. Django 프로젝트 설정

Django 프로젝트를 생성하고 설정하는 과정입니다. 다음 명령어를 사용하여 Django 프로젝트를 생성합니다.

django-admin startproject project_name

이후, settings.py 파일에서 INSTALLED_APPS 변수에 ‘django_crontab’를 추가하여 크롤링 작업을 자동으로 실행할 수 있도록 설정합니다.

2. 웹 크롤링을 위한 라이브러리 설치

Django 프로젝트에서 웹 크롤링을 하기 위해 다음 라이브러리를 설치합니다.

pip install requests
pip install beautifulsoup4

requests는 HTTP 요청을 보내고 응답을 받는 데 사용되며, beautifulsoup4는 HTML 파싱을 쉽게 해주는 라이브러리입니다.

3. 웹 크롤링 코드 작성

Django 프로젝트의 앱(app)을 생성한 후, 생성한 앱의 views.py 파일에 웹 크롤링 코드를 작성합니다. 작성된 코드는 다음과 같습니다.

from django.shortcuts import render
import requests
from bs4 import BeautifulSoup

def web_crawling(request):
    url = 'https://example.com' # 크롤링할 웹 페이지 URL

    response = requests.get(url)
    soup = BeautifulSoup(response.content, 'html.parser')

    # 스크래핑할 데이터 추출
    data = soup.find('div', class_='content').get_text()

    return render(request, 'web_crawling.html', {'data': data})

위 코드에서는 먼저 requests.get() 메소드를 사용하여 웹 페이지의 내용을 가져옵니다. 가져온 내용은 BeautifulSoup 객체로 파싱하여 원하는 데이터를 추출합니다. 추출한 데이터는 render() 메소드를 통해 HTML 템플릿으로 전달됩니다.

4. HTML 템플릿 작성

웹 크롤링 결과를 보여주기 위해 Django 프로젝트의 템플릿 파일을 작성합니다. 생성한 앱의 templates 폴더 안에 web_crawling.html 파일을 생성하고, 다음과 같이 작성합니다.


<!DOCTYPE html>
<html>
<head>
    <title>웹 크롤링 결과</title>
</head>
<body>
    <h1>웹 크롤링 결과</h1>
    <p>{{ data }}</p>
</body>
</html>

위 템플릿 파일에서 dataviews.py 파일에서 전달받은 데이터를 출력하는 변수입니다.

5. URL 매핑

Django 프로젝트의 urls.py 파일에서 URL 패턴에 맞는 view 함수를 호출하도록 설정합니다. 다음과 같이 urls.py 파일을 수정합니다.

from django.urls import path
from .views import web_crawling

urlpatterns = [
    path('web-crawling/', web_crawling, name='web_crawling'),
]

위 코드에서 /web-crawling/ URL로 접속하면 web_crawling view 함수가 호출됩니다.

6. 웹 크롤링 실행

웹 크롤링을 실행하기 위해 Django 프로젝트의 루트 디렉토리에서 다음 명령어를 입력합니다.

python manage.py runserver

웹 브라우저에서 http://localhost:8000/web-crawling/에 접속하여 웹 크롤링 결과를 확인할 수 있습니다.

위와 같이 Django를 이용하여 웹 크롤링과 스크래핑을 구현할 수 있습니다. Django의 강력한 기능과 Python의 유연성을 함께 활용하여 웹 상의 다양한 정보를 수집하고 활용할 수 있습니다.