본문 바로가기
  • 가제가재_기록블로그
카테고리 없음

Scrapy Basic

by 가제가재 2023. 8. 8.

Scrapy Basic

Scrapy(스크래피) 는 강력한 웹 스크래핑 및 웹 크롤링 프레임 워크이다.

다른 웹 크롤링 툴들이 많지만 Django 개발 연습을 하는 중이라 겸사겸사 같이 연구 해보려 한다.

아직 국내에 서적자료가 부족해 어렵지만, 하다보면 보람도 생길테고 열심히 해볼 요량이다.

 

23.08.08 - 작성 시작

 

Scrapy Documentation

 

Scrapy 2.10 documentation — Scrapy 2.10.0 documentation

© Copyright 2008–2023, Scrapy developers. Revision 88327c7c. Last updated on Aug 07, 2023.

docs.scrapy.org


목차

  • 1. Scrapy의 구조
  • 2. Scrapy의 기본 명령어

시작하기 전에 - 출처


시작하기

 

1. Scrapy의 구조

Scrapy의 구조

 

Architecture overview — Scrapy 2.10.0 documentation

© Copyright 2008–2023, Scrapy developers. Revision 88327c7c. Last updated on Aug 07, 2023.

docs.scrapy.org

 

구성

 

- Scrapy Engine

  • 엔진은 시스템의 모든 구성 요소간의 데이터 흐름을 제어하고, 특정 작업이 발생할 때 이벤트를 트리거한다. 
  • request 와 response 처리
  • 데이터 흐름 관리

- Scheduler

  • 엔진에서 요청을 수신하고, 엔진의 요청에 응답하기 위한 대기열을 제어한다.
  • URL 관리 및 스케줄링
  • 중복 된 URL 제어

- Item Pipline

  • 추출 데이터를 스파이더에서 가져와 저장, 관리, 수정 등을 담당한다.
  • 데이터 가공 및 정제
  • 중복 데이터 처리

 - Spiders 

  • 웹 페이지를 방문하고 데이터를 수집함.
  • URL 생성
  • 데이터 규칙 정의 / 추출 / Item(아이템) 생성

- Downloder 

  • Spiders 가 지정한 URL 을 이용해 데이터를 가져온다(다운로드).
  • 네트워크 요청(웹 페이지 연결)
  • 비 동기처리(병렬작업)

- Downloder Middleware 

  • 웹페이지 요청사항을 수정/ 강화 하는 역할. Downloder 와 Spiders 사이의 중재 역할.
  • 요청/응답 조정 및 보완
  • 네트워크 요청 조정/ 보완

이미지 출처 : Scrapy Documentation

순서는 위 이미지와 같고, 이후 내용 보강 예정


2. Scrapy 기본 명령어

Crt + F 로 알아서 잘 찾자.


- Scrapy 인스톨

pip install scrapy

 

 


- Scrapy 버전 확인

scrapy version

- 프로젝트 생성

scrapy startproject 프로젝트이름

Django 처럼 우선 프로젝트 생성으로 시작한다. 이 부분은 프레임워크 특성상 동일한지 확인 필요

프로젝트 생성 화면

 

cd SampleName

프로젝트 폴더 내부로 이동하자


- Spider 만들기 = 크롤러 만들기

$ scrapy genspider 크롤러_이름 크로링_사이트
$ scrapy genspider Test music.bugs.co.kr/chart
Created spider 'Test' using template 'basic' in module:
  SampleName.spiders.Test
(venv)

크롤링 예시용으로 벅스 음악차트 사이트를 넣음

 

[크롤러_이름] 뒤에 [크롤링_사이트] 를 붙여 사이트에 맞는 Spider 가 자동으로 생성되었다.

 

자동 생성 된 모습


- Spider(크롤러) 실행

$ scrapy crawl 크롤러_이름 # 단, 위치는 프로젝트 내부여야함
$ scrapy crawl Test

아직은 작성을 안해 그냥 실행 만 된 모습이다.


팁 모음


- 다운로드 간격 조정

기본 세팅은 0 이다.

프로젝트 폴더 내부의 'settings.py' 파일을 열자.

다운로드 딜레이가 0이라면 빨라서 좋을 것 같지만, 시스템 부하가 온다...

활성화 해주자.

DOWNLOAD_DELAY = 1

- 명령어 모음 확인

헷갈리면 터미널에서도 확인이 가능하다.

$ scrapy
Scrapy 2.10.0 - active project: SampleName

Usage:
  scrapy <command> [options] [args]

Available commands:
  bench         Run quick benchmark test
  check         Check spider contracts
  crawl         Run a spider
  edit          Edit spider
  fetch         Fetch a URL using the Scrapy downloader
  genspider     Generate new spider using pre-defined templates
  list          List available spiders
  parse         Parse URL (using its spider) and print the results      
  runspider     Run a self-contained spider (without creating a project)
  settings      Get settings values
  shell         Interactive scraping console
  startproject  Create new project
  version       Print Scrapy version
  view          Open URL in browser, as seen by Scrapy

Use "scrapy <command> -h" to see more info about a command
(venv)

공부하며 추가 될 예정