[파이썬] Scrapy 이미지 및 미디어 다운로드

Scrapy는 파이썬으로 작성된 웹 크롤링 및 스크레이핑 프레임워크입니다. 이 강력한 도구를 사용하여 웹에서 이미지 및 미디어를 다운로드하는 것은 매우 간단합니다. 이 블로그 포스트에서는 Scrapy를 사용하여 이미지 및 미디어를 다운로드하는 방법을 알아보겠습니다.

1. Scrapy 설치 및 프로젝트 생성

먼저, Scrapy를 설치해야 합니다. 터미널 또는 명령 프롬프트에서 다음 명령을 실행하여 Scrapy를 설치합니다:

pip install scrapy

설치가 완료되었다면, 새로운 Scrapy 프로젝트를 생성해 보겠습니다. 원하는 디렉토리에 이동한 다음, 다음 명령을 실행합니다:

scrapy startproject media_downloader

이렇게 하면 media_downloader라는 이름의 새로운 Scrapy 프로젝트가 생성됩니다.

2. 이미지 및 미디어 다운로드 파이프라인 설정

이미지 및 미디어를 다운로드하기 위해 Scrapy 파이프라인을 설정해야 합니다. media_downloader 프로젝트 디렉토리로 이동한 다음, settings.py 파일을 엽니다. 파이프라인 설정 부분을 찾아 다음과 같이 수정해주세요:

ITEM_PIPELINES = {
    'scrapy.pipelines.images.ImagesPipeline': 1,
}

이렇게 하면 Scrapy는 이미지 다운로드에 ImagesPipeline을 사용하도록 설정됩니다.

3. 이미지 다운로드 아이템 생성

이미지를 다운로드하기 위해 아이템을 생성해야 합니다. media_downloader/media_downloader/items.py 파일을 열고 다음 코드를 추가합니다:

import scrapy


class ImageItem(scrapy.Item):
    image_urls = scrapy.Field()
    images = scrapy.Field()

이렇게 하면 ImageItem 클래스가 생성되고, image_urlsimages 필드가 정의됩니다.

4. 이미지 스파이더 작성

이제 이미지를 다운로드하기 위한 스파이더를 작성해보겠습니다. media_downloader/media_downloader/spiders 디렉토리에 image_spider.py라는 파일을 생성하고 다음 코드를 추가합니다:

import scrapy
from media_downloader.items import ImageItem


class ImageSpider(scrapy.Spider):
    name = 'image_spider'
    start_urls = ['https://example.com/images']

    def parse(self, response):
        item = ImageItem()
        item['image_urls'] = response.css('img').xpath('@src').getall()
        yield item

이렇게 하면 ImageSpider 클래스가 생성되고, start_urls에는 이미지를 다운로드할 웹 페이지의 주소를 입력해야 합니다. parse 메소드에서 ImageItem을 생성하고, 이미지의 URL을 image_urls 필드에 저장합니다.

5. Scrapy 실행 및 이미지 다운로드

이제 Scrapy를 실행하여 이미지를 다운로드해보겠습니다. 터미널에서 다음 명령을 실행하세요:

scrapy crawl image_spider

이렇게 하면 ImageSpider가 실행되고, 이미지가 다운로드됩니다. 다운로드된 이미지는 media_downloader/media_downloader/images 디렉토리에 저장됩니다.

이상으로, Scrapy를 사용하여 이미지 및 미디어를 다운로드하는 방법을 설명했습니다. Scrapy의 강력한 기능을 활용하여 웹에서 필요한 이미지 및 미디어를 쉽게 다운로드할 수 있습니다. Happy crawling!