Scrapy
Scrapy
공부한 내용을 스스로 보기 쉽게 정리한 글입니다.
- Scrapy 라이브러리는 파이썬에서 제공하는 라이브러리로써, 대량의 페이지들의 Crawling을 손쉽게 해주는 라이브러리이다.
1. Install
- 파이썬의 라이브러리 이므로 pip 으로 설치 할 수 있다.
1
pip3 install scrapy
2. 실습
- 실습을 위해 import 할 것들
1 | import scrapy |
- requests 를 통해 url 정보를 받아온다.
- TextResponse 를 통해 받아온 html 파일을 encoding 과 text형식으로 return
1 | req = requests.get("url_name") |
1 | a = response.xpath('xpath') |
3. Scrapy 사용하기
(1) scrapy 프로젝트 생성
- shell command
1
scrapy startproject crawler
1 | !scrapy startproject crawler |
New Scrapy project 'crawler', using template directory '/Users/emjayahn/.pyenv/versions/3.7.0/envs/dss/lib/python3.7/site-packages/scrapy/templates/project', created in:
/Users/emjayahn/Dev/DSS/TIL(markdown)/crawler
You can start your first spider with:
cd crawler
scrapy genspider example example.com
1 | !tree crawler |
crawler
├── crawler
│ ├── __init__.py
│ ├── __pycache__
│ ├── items.py
│ ├── middlewares.py
│ ├── pipelines.py
│ ├── settings.py
│ └── spiders
│ ├── __init__.py
│ └── __pycache__
└── scrapy.cfg
4 directories, 7 files
(2) Scrapy 기본 구조
Spider
- 크롤링 절차 정하기
- 어떤 웹사이트들을 어떻게 크롤링 할 것인지 선언
- 각각의 웹페이지의 어떤 부분을 스크래핑 할 것 인지 명시하는 클래스
items.py
- spider 가 크롤링한 data 들을 저장할 때, 사용자 정의 자료구조 클래스
- MVC : 중 Model 부분에 해당
- Feature 라고 생각
pipeline.py
- 스크래핑한 데이터를 어떻게 처리할지 정의
- 데이터에 한글이 포함되어 있을 때는 encoding=’utf-8’ utf-8인코딩이 필요
settings.py
- Spider, item, pipeline 의 세부 사항을 설정
- (예) 크롤링 빈도 등
- (예) robots.txt - ROBOTSTXT_OBEY=True