파이썬 웹크롤링 - 쇼핑몰 크롤링을 해보자(1) : 개발환경 선택 및 구축
<쇼핑몰 크롤링을 위한 파이썬 웹크롤러 제작기>
안녕하세요.
개발자 김모씨입니다.
얼마전 지인의 부탁이 있었어요.
N개의 쇼핑몰을 크롤링 해야 하는데, 짜줄 수 있겠냐 하는 거였죠.
크롤러는 3년전 phantomJs를 활용해
네이버카페, 블로그를 크롤링 해본 게 전부라서 거절하려 했지만,
워낙 막역한 사이기도 하고
제 스스로도 성장할 수 있겠다 싶어 해보기로 하였습니다.
혹시나 이 글을 보게 될
앞으로 크롤러를 개발하게 되실 분들께 도움이 되기를 바라며
개발과 함께 그 기록을 남겨보려 합니다.
NEEDS 분석
개발을 시작하기에 앞서 명확한 NEEDS 분석부터 해야죠?
1. 폐쇄적 쇼핑몰
요청이 들어온 쇼핑몰들은 상당히 폐쇄적이었습니다.
로그인한 유저들에게만 상품 정보를 제공하였기에,
크롤링 실행 전 로그인 기능이 필요합니다.
2. 상품 탭 전환
일반적인 쇼핑몰과 마찬가지로,
상품 카테고리와 상품 창이 넘버링으로 구분되어 있는 상태입니다.
그래서 해당 화면으로 전환할 수 있는 기능이 필요합니다.
3. 엑셀 정리
이건 메인은 핵심 기능은 아니지만,
아웃풋이 미리 정리된 엑셀로 뽑혀야 합니다.
구현 시 미리 정의된 엑셀 포맷에 따라 정리하여야 합니다.
그렇지만 크롤러는 1회만 동작하며, 정기적인 배치 기능은 필요하지 않습니다.
4. 코드 재활용성
확정은 아니지만,
타겟 쇼핑몰은 현재 기준 약 200개이며, 이마저도 증가할 가능성이 있습니다.
모든 쇼핑몰마다 html이 다르기에,
매 쇼핑몰마다 크롤러를 짜줄 수는 없으니, 재활용이 가능하도록 코드를 구현하여야 합니다.
개발 환경 선택
NEEDS를 분석했으니 개발 환경을 선택해야죠.
고민할 것 없이 대세를 따르기로 했습니다.
최근의 파이썬 크롤링은 "셀레니움 + 뷰티풀수프"로 거의 확정적이더라구요.
1. 뷰티풀수프 (beautifulsoup4)
Beautiful Soup는 HTML과 XML 파일로부터 데이터를 가져오기 위한 라이브러리 입니다.
쉽게 말해, 이 라이브러리를 사용해 웹페이지에 있는 내가 원하는 데이터를 가져올 수 있다는 말입니다.
www.crummy.com/software/BeautifulSoup/bs4/doc/
그러나 Beautiful Soap는 정적데이터를 크롤링하기 위한 라이브러리이기 때문에,
NEEDS에서 분석한 버튼을 클릭해야 한다는 등의 기능 구현에 어려움이 있습니다.
2. 셀레니움 (Selenium)
Selenium은 웹 애플리케이션을 위한 자동화테스팅 프레임워크입니다.
Web Driver라는 웹 브라우저를 통해 웹 사이트를 탐험할 수 있습니다.
selenium-python.readthedocs.io/
Selenium은 가상의 사용자 행동을 동적으로 추가할 수 있습니다. 이를 통해 위의 NEEDS를 해결할 겁니다.
개발 환경 구축
자 환경 구축을 해봅시다.