데이터 전처리: 데이터 수집 기법 – Scrapy)

ㅁ 데이터 수집 기법

1. Scrapy)

ㅇ 정의:
파이썬 기반의 오픈소스 웹 크롤링 및 스크래핑 프레임워크로, 웹사이트에서 구조화된 데이터를 자동으로 수집할 수 있도록 지원하는 도구.

ㅇ 특징:
– 비동기 처리 기반으로 빠른 데이터 수집 가능
– XPath, CSS Selector를 이용한 정교한 데이터 추출 지원
– 크롤링 과정에서 파이프라인을 통한 데이터 전처리 및 저장 가능
– 프로젝트 구조화가 잘 되어 있어 대규모 크롤링에 적합

ㅇ 적합한 경우:
– 뉴스, 쇼핑몰, 공공 데이터 포털 등에서 대량의 웹 데이터를 주기적으로 수집해야 하는 경우
– 크롤링 대상 웹페이지 구조가 비교적 일정하고, HTML 요소 식별이 명확한 경우

ㅇ 시험 함정:
– Scrapy는 단순한 HTML 파싱 라이브러리가 아니라 프레임워크라는 점을 혼동
– requests/BeautifulSoup과 비교 시 동작 방식과 목적 차이를 묻는 문제에서 혼동 가능
– robots.txt 준수 여부, 법적 이슈 관련 질문에서 함정

ㅇ 시험 대비 “패턴 보기” 예시:
– (O) Scrapy는 비동기 요청 처리를 통해 대규모 웹 크롤링에 적합하다.
– (O) Scrapy는 데이터 수집과 동시에 파이프라인을 통해 전처리 및 저장을 지원한다.
– (X) Scrapy는 단일 HTML 페이지를 수동으로 파싱하는 간단한 라이브러리이다.
– (X) Scrapy는 자바스크립트 렌더링을 기본적으로 지원하므로 Selenium이 필요 없다.

ㅁ 추가 학습 내용

Scrapy의 아키텍처는 Spiders, Items, Pipelines, Middleware로 구성되며 각 구성 요소의 역할과 동작 순서를 이해하는 것이 중요하다.
Spiders는 크롤링할 웹 페이지를 정의하고 요청과 응답을 처리하며, Items는 수집한 데이터를 구조화하여 저장하는 객체이다.
Pipelines는 수집된 데이터를 가공, 검증, 저장하는 단계이며, Middleware는 요청과 응답이 Spiders와 Downloader 사이를 오갈 때 이를 가로채어 처리하는 역할을 한다.

CrawlSpider와 Rule을 사용하면 링크를 자동으로 추적하며 크롤링할 수 있다. Rule은 링크 추적 규칙과 콜백 함수를 지정하여 효율적인 페이지 탐색을 가능하게 한다.

settings.py에서는 크롤링 동작을 제어하는 다양한 설정을 할 수 있다. 예를 들어 동시 요청 수(CONCURRENT_REQUESTS)와 다운로드 지연(DOWNLOAD_DELAY)을 조정하여 서버 부하를 줄이고 크롤링 효율을 관리할 수 있다.

자바스크립트 기반 페이지를 처리하기 위해서는 Splash나 Selenium과 같은 도구를 Scrapy와 연동하여 렌더링된 HTML을 수집할 수 있다.

robots.txt 준수 여부는 ROBOTSTXT_OBEY 옵션으로 설정하며, True로 설정하면 해당 사이트의 robots.txt 규칙을 따른다.

데이터 출력 포맷은 JSON, CSV, XML 등으로 설정할 수 있으며, FEED_FORMAT과 FEED_URI 옵션을 통해 저장 형식과 경로를 지정할 수 있다.

답글 남기기

Your email address will not be published. Required fields are marked *.

*
*