Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Scrapy 스파이더를 Scrapinghub에 배포하는 방법


Scrapy 스파이더란?

Scrapy 스파이더(Spider)는 웹사이트의 링크를 따라가며 웹페이지에서 정보를 추출하는 기능을 제공하는 클래스입니다.

이 클래스는 다른 모든 스파이더가 반드시 상속해야 하는 핵심 클래스로, Scrapy 크롤링 작업의 출발점이 됩니다.

Scrapinghub란?

Scrapinghub는 Scrapy 스파이더를 실행하기 위한 오픈소스 플랫폼입니다. Scrapinghub는 웹 콘텐츠를 유용한 데이터와 정보로 변환해 주며, 복잡한 구조의 웹페이지에서도 손쉽게 데이터를 추출할 수 있도록 지원합니다.

이 글에서는 Scrapinghub를 활용해 Scrapy 스파이더를 클라우드에 배포하고 실행하는 전체 과정을 단계별로 살펴보겠습니다.

1단계: Scrapy 프로젝트 생성

Scrapy를 설치한 후, 터미널에서 다음 명령어를 실행하여 새 프로젝트를 생성합니다:

$scrapy startproject <project_name>

그다음 새로 생성된 프로젝트 폴더(project_name)로 디렉터리를 이동합니다.

2단계: 대상 웹사이트용 스파이더 작성

크롤링할 대상 웹사이트를 위한 Scrapy 스파이더를 작성합니다. 여기서는 일반적인 예제 사이트인 "quotes.toscrape.com"을 사용해 보겠습니다.

아래는 매우 간단한 형태의 Scrapy 스파이더 코드입니다:

코드 -

#import scrapy library
import scrapy

class AllSpider(scrapy.Spider):

crawled = set()
#Spider name
name = 'all'
#starting url
start_urls = ['https://www.tutorialspoint.com/']

def __init__(self):
   self.links = []

def parse(self, response):
   self.links.append(response.url)
   for href in response.css('a::attr(href)'):
      yield response.follow(href, self.parse)

3단계: 스파이더 실행 및 결과 저장

스파이더를 실행하고 출력 결과를 links.json 파일에 저장합니다.

위 코드를 실행하면 웹사이트의 모든 링크를 스크래핑하여 links.json 파일에 저장할 수 있습니다. 단발성 작업이라면 로컬 환경에서 실행하는 것으로 충분하지만, 스파이더를 하루 종일(24/7) 지속적으로 운영하려면 클라우드 기반 플랫폼인 Scrapinghub에 배포하는 것이 필수적입니다.

4단계: Scrapinghub 계정 생성

Scrapinghub 계정 만들기

Gmail 계정 또는 GitHub 계정을 사용해 Scrapinghub 로그인 페이지에 접속하여 로그인하면 자동으로 대시보드(dashboard)로 이동합니다.

Scrapy 스파이더를 Scrapinghub에 배포하는 방법

이제 "Create project" 버튼을 클릭하고 프로젝트 이름을 입력합니다. 프로젝트는 명령줄(CLI) 또는 GitHub를 통해 클라우드에 추가할 수 있습니다.

여기서는 shub CLI를 통해 코드를 배포해 보겠습니다. 먼저 shub를 설치합니다:

$pip install shub

shub 설치가 완료되면, 계정 생성 시 발급된 API 키를 사용해 shub에 로그인합니다(API 키는 https://app.scrapinghub.com/account/apikey 에서 확인할 수 있습니다):

$shub login

API 키가 올바르면 로그인이 정상적으로 완료됩니다. 이제 배포 ID(deploy_id)를 사용해 프로젝트를 배포합니다. 배포 ID는 "Deploy your code" 섹션의 명령줄 영역에서 확인할 수 있는 6자리 숫자입니다:

$ shub deploy deploy_id

명령줄에서의 작업은 여기까지입니다. 다시 Spiders 대시보드로 돌아가면 배포가 완료된 스파이더가 준비된 것을 확인할 수 있습니다. 스파이더 이름을 클릭한 뒤 Run 버튼을 누르면 실행됩니다.

Scrapy 스파이더를 Scrapinghub에 배포하는 방법

이제 클릭 한 번으로 스파이더의 실행 진행 상황을 실시간으로 확인할 수 있으며, 더 이상 로컬 컴퓨터를 24시간 내내 켜두지 않아도 됩니다.