웹 크롤링 정리
1. 웹 크롤링 정의
- 인터넷 웹 페이지에서 원하는 데이터(html)를 수집하는 기술
2. 웹 페이지 구동 원리
2-1. 정적 페이지
- HTML 소스에 데이터가 있는 경우, 즉 게시물의 정보가 포함된 HTML
- Jsoup 라이브러리 사용
2-2. 동적 페이지
- JS가 HTML 소스에 데이터를 넣어주는 경우, 즉 게시물의 정보가 없는 HTML
- Selenium(동적/정적) 라이브러리 사용
3. 목적
- 데이터 수집 : 뉴스, 상품, 날씨, 위치 등
- 데이터 분석 : 수집 자료 저장 → 통계 → 학습(AI)
- 업무 효율 : 자동 버튼 클릭, 자동 아이디/비밀번호 입력 등
4. robots.txt
- 웹사이트 루트 경로에 있는 자동화(크롤링) 접근 규칙 파일
- 예:
https://www.daum.net/robots.txt
- 접근 권한
- Allow : 접근 허용
- Disallow : 접근 금지
- 법적 강제성은 없지만, 크롤링 1회 = REST 요청 1회 → DB 작동 → 과부하 가능
5. Jsoup
5-1. 그레이들 설치
5-2. 주요 메소드
- 크롤링할 웹주소 HTML을 Document 객체로 가져오기
Document document = Jsoup.connect("크롤링할웹주소").get();
- 특정한 마크업(요소) 가져오기
2-1) 1개일 때 : Element
Element element = document.selectFirst("css선택자");
예: <a href="">부평역</a>
2-2) N개일 때 : Elements
Elements elements = document.select("css선택자");
예: [<a href="">부평역</a>, <a href="">부천역</a>]
- 마크업(요소)의 데이터 가져오기
String text = element.text();
예: <a href="">부평역</a> ---> "부평역"
- 마크업(요소)의 속성값 가져오기
String attr = element.attr("속성명");
예: <img src="localhost:8080"/> ----> "localhost:8080"
6. Selenium + 크롬
- 'Selenium' 검색
2) Selenium Java » 4.35.0
3) implementation 'org.seleniumhq.selenium:selenium-java:4.35.0'
- 'webdrivermanager' 검색
2) WebDriverManager » 6.3.1
3) implementation 'io.github.bonigarcia:webdrivermanager:6.3.1'