Scrapy Basic
Scrapy(스크래피) 는 강력한 웹 스크래핑 및 웹 크롤링 프레임 워크이다.
다른 웹 크롤링 툴들이 많지만 Django 개발 연습을 하는 중이라 겸사겸사 같이 연구 해보려 한다.
아직 국내에 서적자료가 부족해 어렵지만, 하다보면 보람도 생길테고 열심히 해볼 요량이다.
23.08.08 - 작성 시작
목차
- 1. Scrapy의 구조
- 2. Scrapy의 기본 명령어
시작하기 전에 - 출처
- 참고자료 : Scrapy Documentation 그리고 정지훈 강사님 수업 + 구글링
- 참고자료2: 커리큘럼 코사다마
시작하기
1. Scrapy의 구조
구성
- Scrapy Engine
- 엔진은 시스템의 모든 구성 요소간의 데이터 흐름을 제어하고, 특정 작업이 발생할 때 이벤트를 트리거한다.
- request 와 response 처리
- 데이터 흐름 관리
- Scheduler
- 엔진에서 요청을 수신하고, 엔진의 요청에 응답하기 위한 대기열을 제어한다.
- URL 관리 및 스케줄링
- 중복 된 URL 제어
- Item Pipline
- 추출 데이터를 스파이더에서 가져와 저장, 관리, 수정 등을 담당한다.
- 데이터 가공 및 정제
- 중복 데이터 처리
- Spiders
- 웹 페이지를 방문하고 데이터를 수집함.
- URL 생성
- 데이터 규칙 정의 / 추출 / Item(아이템) 생성
- Downloder
- Spiders 가 지정한 URL 을 이용해 데이터를 가져온다(다운로드).
- 네트워크 요청(웹 페이지 연결)
- 비 동기처리(병렬작업)
- Downloder Middleware
- 웹페이지 요청사항을 수정/ 강화 하는 역할. Downloder 와 Spiders 사이의 중재 역할.
- 요청/응답 조정 및 보완
- 네트워크 요청 조정/ 보완
순서는 위 이미지와 같고, 이후 내용 보강 예정
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)
공부하며 추가 될 예정