현재까지 가장 좋아하는 라이브러리
< Playwright 라이브러리 >
코드가 간결하고
셀레니움 라이브러리보다 확실히 빠르다
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와 동일
반응형