Programming/Web (웹)

[Crawling / Scrapping] 여러가지 스크래핑, 크롤링 라이브러리 비교

MOONCO 2021. 3. 12. 14:26

현재까지 가장 좋아하는 라이브러리

 

< Playwright 라이브러리 >

 

[Node.js] Playwright 사용법

playwright 설치 npm i -D playwright playwright 기본 사용법 // playwright 모듈 불러오기 import playwright from 'playwright'; // chromium 불러오기 const chromium = playwright.chromium; // 동기 방식 사..

defineall.tistory.com

코드가 간결하고

셀레니움 라이브러리보다 확실히 빠르다

 

Node.js 패키지 이용하는 법

 

selenium-webdriver

js, css, dom 형식에 구애받지 않고 크롤링 가능

코드가 쉬움

속도가 느림

기본적인 javascript 기능을 사용할 때 적합하다. 

지원하는 브라우저가 다양하다.

실제로 브라우저를 실행하므로, javascript로 생성되는 html요소들을 스크랩할 수 있다.

// 로그인 동작 쉬움
// ajax, pjax요청 처리 쉬움
// 요란

 

cheerio

로그인이 필요하거나, js스크립트로 화면을 시시각각 변경하는 동적페이지를 가져오는데 한계가 있지만,

그 외 단순한 html을 가져올때 사용할 수 있다.

 

puppeteer

크롬 혹은 크로미움을 Headless 브라우저(GUI가 없는 브라우저) 상태로 조작 할 수 있는 API

javascript로 인해, 나중에 불러와진 데이터도 가져올 수 있다

 

playwright

puppeteer를 만든팀이 MS로 옮겨가면서 만들게 된 라이브러리, puppeteer와 유사

크롬, 파이어폭스, webkit 사용가능

javascript, typescript, python, c#, go 언어 사용 개발 가능

 

cypress

자동화 테스트 도구

( 사용자의 행동을 모방하는 테스트를 할 수 있게 한다. )

크롬과, 일렉트론 브라우저만 지원

브라우저 내부에서 실행되므로, 빠르다.

javascript에서만 사용가능 하다.

css selector와 태그+속성값으로 가져올 것을 선택한다.

contains를 사용하여 브라우저 안에서 눈에보이는 text값으로 element를 선택할 수 있다.

// mocha 기반이기에 nodejs 개발자들에게도 익숙하다



멀티탭을 지원하지 않는다.

( SPA가 늘어남에 따라 필요성이 줄어들었으나, 새로운 탭으로 redirecting 하는 경우 테스트를 진행 할 수 없다 )

xpath를 지원하지 않는다.

파이썬 라이브러리 이용하는 법

 

selenium

javascript의 selenium과 동일

 

Scrapy

사용자 정의 기능을 추가 할수 있다. ( 나만의 함수 구축 가능 )

비동기 방식 사용으로 작업을 빠르게 할 수 있음


// 마이그레이션이 쉽다. 
// 비동기 네트워킹 프레임 워크 twisted 기반 구축
// 비차단 메커니즘? 사용
// xpath, css 사용 크롤링
// 쉬운 확장
// 빠른 속도
// 메모리, cpu 사용량 적음

 

BeautifulSoup

코드를 간단하고, 유연하게 사용할 수 있다

// html, xml 데이터 크롤링
// 혼자서 모든 일을 할수는 없음 (requests, urllib 같은 라이브러리가 필요)
// 데이터 다운후, 구문 분석하기 위한 외부 parser 필요
// 데이터 정리가 편하다
// 멀티 스레딩을 알아야, 효율적인 관리가 가능하다

 

 

Requests

selenium보다 대략 20배 빠름

 

playwright

javascript의 playwright와 동일

 

 

반응형