ref :
https://mollangpiu.tistory.com/362
https://velog.io/@rednada1486/Java-Selenium-활용-동적웹크롤링#️-2-selenium과-chromedriver-다운로드
셀레니움
Selenium은 웹 브라우저를 자동화하는 도구다. 주로 웹 앱 테스팅에 사용되지만, 스크래핑에도 널리 쓰인다. Java, Python 등 여러 언어를 지원하며, 복잡한 웹 페이지에서도 데이터를 추출할 수 있다.
- 실행 방식
- Selenium 코드는 서버 측에서 실행된다. 이 코드는 웹 드라이버 API를 통해 웹 브라우저를 제어한다. 사용자의 로컬 머신에서 크롬을 직접 실행하는 것은 아니다.
- 크롬 드라이버 필요성
- Selenium은 웹 드라이버 인터페이스를 사용해 브라우저를 제어한다. 크롬 드라이버는 이 인터페이스를 크롬 브라우저에 구현한 것이다. 이 드라이버 없이는 Selenium이 크롬 브라우저를 제어할 수 없다.
실제 작동 순서
- Spring Boot 애플리케이션에서 Selenium 코드를 실행한다.
- 해당 코드는 크롬 드라이버를 통해 크롬 브라우저를 제어한다.
- 웹 페이지에서 필요한 데이터를 수집한 후, 이를 처리하거나 저장한다.
크롬 드라이버는 크롬 브라우저를 제어하기 위한 중개자 역할을 하므로, Selenium 코드와 크롬 브라우저 사이에서 통신을 담당한다.
1. Selenium과 Chrome Driver 다운로드
셀레니움
- https://www.selenium.dev/downloads/ 접속
- Downloads -> Selenium Server(Grid) -> 4.10.0 클릭
.jar 파일을 직접 넣거나, Gradle을 사용하여 의존성을 추가할 것.
implementation 'org.seleniumhq.selenium:selenium-java
크롬 드라이버
1. 자신의 크롬브라우저 버전 체크
(크롬브라우저 열기 -> 점 3개 클릭 -> 설정 -> Chrome 정보)
=> 버전 117.0. .. 크롬 드라이버 버전이 너무 높아 구버전을 맞춰서 따로 설치해야 한다.
2. https://chromedriver.chromium.org/downloads 접속
3. 자신의 크롬브라우저 버전에 맞는 chromedirever 다운
(저는 115버전, 윈도우, 64bit)
2. Java 프로젝트에 chromedriver 추가
104 버전을 맞춰서 다운로드 받았다.
https://chromedriver.storage.googleapis.com/index.html?path=104.0.5112.79/
https://chromedriver.chromium.org/downloads
3. API 문서 따라가기
https://www.selenium.dev/documentation/webdriver/getting_started/install_library/
4. 실행 결과와 우회?
A 사이트의 경우 스크래핑이 되는 경우를 확인, B의 경우는 차단되었다.
https://blog.hashscraper.com/5-principles-for-bypassing-web-crawling-blocks/
추가적인 크롤링 기법을 사용하려면 해당 사이트의 레퍼런스를 참조해볼 것.
또한 실제 key값이나 한글 검색어에서 URL 인코딩 변경 값을 사용해야 한다.
이 현상은 URL 인코딩(URL Encoding) 또는 퍼센트 인코딩(Percent Encoding)이라고 한다. URL에서는 ASCII 문자셋만 허용되기 때문에, 다른 문자(예: 한글, 공백, 특수문자 등)는 인코딩되어야 한다.
'제주'라는 문자는 UTF-8 형식으로 인코딩되며, UTF-8에서 '제'는 'EC A0 9C'라는 16진수로, '주'는 'EC A3 BC'로 표현된다. 이 16진수 값을 퍼센트 인코딩으로 변환하면 '%EC%A0%9C%EC%A3%BC'가 된다.
'프로젝트 > 여행지 오픈 API' 카테고리의 다른 글
[ElasticSearch] 4. 필드와 멀티 필드, 인덱스 템플릿 (0) | 2023.10.24 |
---|---|
[ElasticSearch] 3. 벌크 데이터와 매핑, 데이터 타입과 문자열 처리 (0) | 2023.10.24 |
[ElasticSearch] 2. 다이나믹 매핑, 도큐먼트 CRUD (0) | 2023.10.24 |
[ElasticSearch] 1. 도큐먼트와 인덱스 (1) | 2023.10.24 |
[ElasticSearch, Kibana] 개발 환경 세팅 (0) | 2023.10.24 |