Q : 크롤러를 파이썬으로 구현할 때 BeautifulSoup과 Selenium의 장단점은 무엇일까요?
BeautifulSoup | Selenium |
---|
HTML, XML Parsing | 웹 페이지 자동화 검증 Tool (클릭, 스크롤, sleep) |
정적 페이지 | 동적 페이지 |
빠름, 메모리 절약 | 느림, 메모리 요구 큼 |
BeautifulSoup을 사용하는 경우는 웹 페이지의 정보를 다운로드 받은 뒤 브라우저에서 정보를 가져오지 않고, 다운로드 한 정보 안에서 필요한 내용을 찾는 것이기에 속도가 빠르다. (정적인 페이지)
반대로 Selenium만 이용하는 경우 웹 페이지에 계속 접속하고 있기 때문에 필요한 내용을 찾을 때 속도가 느리다. 대신, 클릭, 입력, 삭제 등의 브라우저 조작이 가능하다. (동적인 페이지)
- BeautifulSoup
- HTML, XML파일의 정보를 추출해내는 python library
- python 내장 모듈인 request나 urllib을 이용해 HTML을 다운 받고, beautifulsoup으로 데이터를 추출
- REST API에서 데이터를 가져올 때에도 사용됨
- 서버에서 HTML을 다운받음
- HTML을 파싱하고 데이터를 크롤링 하는데에만 쓰임
- Selenium
- 자동화 테스트(버튼 클릭, 스크롤 조작 등등)에 사용되는 프레임워크
- 셀레늄을 이용한 크롤러는 웹 페이지에서 javascript 렌더링을 통해 생성되는 데이터들을 손쉽게 가져올 수 있음
- 인터넷 브라우저를 통해 크롤링을 하는 개념이라, 실제 보여지는 웹 페이지의 전부를 가져올 수 있고, 디버깅 방법 또한 직관적
- 웹 브라우저를 실제로 진행시키는 방법이기 때문에 속도도 많이 느리고, 메모리도 상대적으로 많이 차지
- 멀티프로세스를 사용해서 여러 브라우저로 크롤링 하도록 하면 속도를 일정 부분 개선가능
- 페이지의 단일 element에 접근하는 메소드
참조 : https://coding-kindergarten.tistory.com/27
면접 질문 출처
https://github.com/zzsza/Datascience-Interview-Questions