Language/Python

파이썬 웹크롤링 - 쇼핑몰 크롤링을 해보자(1) : 개발환경 선택 및 구축

개발자 김모씨 2021. 4. 10. 21:27
반응형

<쇼핑몰 크롤링을 위한 파이썬 웹크롤러 제작기>

 

안녕하세요.
개발자 김모씨입니다.

얼마전 지인의 부탁이 있었어요.
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 Soup Documentation — Beautiful Soup 4.9.0 documentation

Non-pretty printing If you just want a string, with no fancy formatting, you can call str() on a BeautifulSoup object (unicode() in Python 2), or on a Tag within it: str(soup) # ' I linked to example.com ' str(soup.a) # ' I linked to example.com ' The str(

www.crummy.com

그러나 Beautiful Soap는 정적데이터를 크롤링하기 위한 라이브러리이기 때문에,
NEEDS에서 분석한 버튼을 클릭해야 한다는 등의 기능 구현에 어려움이 있습니다.

2. 셀레니움 (Selenium)

Selenium은 웹 애플리케이션을 위한 자동화테스팅 프레임워크입니다.
Web Driver라는 웹 브라우저를 통해 웹 사이트를 탐험할 수 있습니다
.

selenium-python.readthedocs.io/

 

Selenium with Python — Selenium Python Bindings 2 documentation

Note This is not an official documentation. If you would like to contribute to this documentation, you can fork this project in GitHub and send pull requests. You can also send your feedback to my email: baiju.m.mail AT gmail DOT com. So far 50+ community

selenium-python.readthedocs.io


Selenium은 가상의 사용자 행동을 동적으로 추가할 수 있습니다. 이를 통해 위의 NEEDS를 해결할 겁니다.


개발 환경 구축

자 환경 구축을 해봅시다.

 

 

 

 

반응형