[Crawling] Beautiful Soup vs Selenium vs Scrapy 프레임워크 비교
[Crawling] Beautiful Soup vs Selenium vs Scrapy 프레임워크 비교
Beautiful Soup
- python 내장 모듈인 requests 나 urllib을 이용해 HTML 다운 받고, beautifulsoup으로 데이터를 추출
- HTML, XML 파일의 정보를 추출
[장점]
- 정적 페이지에 적합
[단점]
- 느림
- 큰 데이터베 세트의 경우 눈에 띄는 병목 현상과 속도 저하가 있을 수 있음
- 서버에서 HTML을 다운 받기 때문에, 서버사이드 렌더링을 사용하지 않는 SPA 사이트나, JavaScript 렌더링을 필요로 하는 사이트에서는 힘듬
Selenium
- 자동화된 웹 테스트(버튼 클릭, 스크롤 조작 등)를 용이하게 하기 위해 개발
[장점]
- 동적 페이지에 적합
- JS, Dom 에 용이
- 인터넷 브라우저를 통해 크롤링하는 개념이라, 실제 보여지는 웹 페이지의 전부를 가져올 수 있고, 디버깅 방법 또한 직관적임
[단점]
- 많은 양의 데이터를 스크래핑할 때 느림
- 웹 브라우저를 실제로 진행시키는 방법이기 때문에 속도도 많이 느리고, 메모리도 상대적으로 많이 차지
- 멀티 프로세스를 사용해서 여러 브라우저로 크롤링하도록 하면 속도를 일정 부분 개선할 수 있음
Scrapy
- 크롤링을 위해 개발된 프레임워크
[장점]
- 매우 빠르고 효율적
- 이벤트 기반 네트워킹 방식으로 작성됨
- 비동기 기능
- 이식성(Portability)
- 모든 운영체제에서 작동함
- 미들웨어, 파이프라인, JS 렌더링(splash), proxy, xpath, CLI 등 다양한 기능들과 플러그인들을 사용 가능
- 병렬처리, robots.txt 준수여부, 다운로드 속도 제어 등 설정 가능
[단점]
- 유저 친화적이지 않음
- 플러그인들이 호환이 잘 안되는 편
출처 : 참조 - 유튜브
댓글남기기