Crawling

[udemy] Updated 2024 | 4 projects with Beautiful Soup, Selenium and Scrapy | ChatGPT for web scraping - 학습후기

bluebamus 2025. 3. 24. 17:16

- xpath나 태그 및 기본 메소드들에 대해 문법이나 파라미터 정보 등을 코드가 아닌 이미지를 통해 정리를 먼저 한번 해준다. 이 부분은 초보자들에게 좋다고 생각한다.

- 강의 코드들이 생각보다 오래되었고 업데이트라는게 강의 초반에 하나씩 메모를 추가해 뭐가 업데이트 되었는지를 고지할 뿐이다.

- 실제 활용할만한 코드의 사용 방법이나 프로젝트 코드는 이전 강의들보다 많이 부족하다.

- splash의 사용방법을 학습하고자 구매한 것인데, 막상 강의 내용을 보니 docker로 서버를 띄우고 scrapy에서 설정 항목에 url을 명시하는 것으로 보아 처리를 별도의 api로 상호 연결해서 사용하는 것으로 보였다. 라이브러리 형식으로 사용 방법은 제공하지 않았다.

- 이전에 학습했던 라이브러리와 비교하고자 plash와 Playwright를 gpt에 질문해봤다.

 

- Splash

   - 헤드리스 브라우저: Splash는 웹 페이지를 브라우저 없이 렌더링할 수 있도록 도와주는 도구입니다.
   - Python과 Scrapy와의 통합: Python 라이브러리로 주로 사용되며, scrapy-splash와 통합되어 Scrapy 프레임워크에서 쉽게 사용할 수 있습니다.
   - RESTful API: Splash는 REST API를 제공하여 HTTP 요청을 통해 페이지를 요청하고 결과를 받아올 수 있습니다.
   - JavaScript 렌더링: JavaScript가 실행된 후에 페이지를 렌더링합니다. JavaScript가 동적으로 로드하는 콘텐츠를 추출할 수 있습니다.
   - 스크린샷과 PDF 생성: 페이지를 렌더링한 후 스크린샷이나 PDF를 생성할 수 있습니다.
   - 제한된 브라우저 지원: Splash는 WebKit 기반으로, 브라우저 기능을 제한적으로 지원합니다. 최신 웹 표준이나 일부 웹사이트에서 호환성 문제가 발생할 수 있습니다.
   - 성능: 대규모 크롤링에서 사용하기에는 성능 면에서 제한이 있을 수 있습니다.

 

- Playwright

   - 모던 브라우저 지원: Playwright는 Chrome, Firefox, WebKit을 지원하며, 최신 웹 표준을 준수합니다.
   - 브라우저 자동화 도구: 웹 애플리케이션의 UI 테스트와 브라우저 자동화에 초점이 맞춰져 있습니다. 이를 통해 자동화된 테스트, 웹 페이지 스크래핑 등에 사용할 수 있습니다.
   - 헤드리스 및 헤드풀 모드 지원: Playwright는 헤드리스 모드 외에도 헤드풀 모드에서 브라우저를 실행할 수 있습니다. 이는 테스트와 디버깅에 유용합니다.
   - 스크린샷 및 PDF 생성: 페이지를 렌더링한 후 스크린샷이나 PDF를 쉽게 생성할 수 있습니다.
   - 속도: Playwright는 다른 브라우저 자동화 도구들보다 더 빠르고 효율적입니다. 특히 멀티 브라우저 테스트나 병렬 처리에서 뛰어난 성능을 발휘합니다.
   - 클라이언트-서버 구조: Playwright는 클라이언트에서 서버와의 통신 없이 바로 브라우저를 자동화합니다. API 호출 없이 직접 브라우저 조작이 가능합니다.
   - 다양한 기능: 페이지 요소 조작, 네트워크 가로채기, 쿠키 관리, 세션 관리 등 다양한 기능을 지원합니다.

 

- Splash와 Playwright의 차이점 비교

특징 Splash Playwright
설명 헤드리스 브라우저로 동적 콘텐츠를 렌더링하여 스크래핑하는 도구 최신 웹 표준을 지원하는 브라우저 자동화 도구
지원하는 브라우저 WebKit 기반, 제한된 브라우저 지원 Chromium, Firefox, WebKit (최신 브라우저)
주요 목적 웹 스크래핑 및 크롤링, 동적 콘텐츠 렌더링 웹 애플리케이션 테스트 및 브라우저 자동화
API 제공 방식 RESTful API JavaScript 및 Python API (브라우저 직접 제어)
사용 방식 주로 Scrapy와 함께 사용 독립적으로 사용하거나 다양한 자동화 작업에 사용
성능 상대적으로 느린 성능 빠르고 효율적인 성능
스크린샷/PDF 생성 지원 (스크린샷 및 PDF 생성) 지원 (스크린샷 및 PDF 생성)
동시 실행 성능 문제로 대규모 동시 실행에 한계 멀티 브라우저 지원 및 병렬 실행 가능
지원하는 언어 Python (Scrapy와 통합) JavaScript, Python (다양한 언어 지원)
동적 콘텐츠 렌더링 JavaScript 기반 동적 콘텐츠 렌더링 지원 JavaScript 및 동적 콘텐츠 렌더링 지원
세션 관리 및 쿠키 처리 제한적 쿠키 및 세션 관리 지원 (고급 설정 가능)
브라우저 제어 웹 페이지 요청 후 JavaScript 실행 결과 반환 브라우저 직접 제어 및 페이지 조작 가능
클라우드 호스팅 자체 호스팅 (설치 필요) Playwright Cloud 또는 자체 호스팅 가능
디버깅 제한적 (스크린샷, PDF 생성 후 디버깅 가능) 디버깅 도구 제공, 네트워크 요청 및 응답 가로채기 가능
다양한 브라우저 테스트 WebKit만 지원 Chromium, Firefox, WebKit 모두 지원

 

- 결론 

   - Splash는 서버를 별도로 구축하여 사용해야 하며, 이를 통해 웹 페이지의 렌더링 결과를 가져옵니다.
   - Playwright는 패키지를 설치하여 바로 사용할 수 있으며, 브라우저 자동화 및 테스트에 유리한 도구입니다.