크롤링 서버 점검 중,
링커리어 크롤링 과정에서
데이터 수집 오류: Message: Stacktrace:
....
해당 에러가 나왔다.
디버깅 해보니 사이트 엘리멘트들이 변경되어서, 해당 부분이 변경을 진행하여 에러를 수정하였다. (해당 부분에 대해 확인하고 수정하는 과정을 주기적으로 해야할 것으로 보인다.)
에러 수정한김에 추가적인 크롤링 파라미터, 함수를 변경하였다.
변경점 1. wait.until(EC.visibility_of_all_elements_located()) 함수 사용
기존 사용하던 EC.presence_of_all_elements_located 함수의 경우 지정된 위치에 있는 모든 요소가 *DOM에 존재하기만 하면 대기를 종료한다. 하지만, EC.visibility_of_all_elements_located() 경우에는 지정된 위치에 있는 모든 요소가 DOM에 존재하고, 화면에서 보이는 상태가 되기를 기다린다.
* DOM은 HTML, XML 문서의 구조를 표현한 프로그래밍 인터페이스이다. 브라우저가 웹 페이지를 로드하면, HTML 문서를 기반으로 DOM을 생성하며, 이 DOM을 통해 웹 페이지의 요소에 접근하고 조작할 수 있다.
즉, DOM이 존재하고, 상호작용이 가능한 상태일때까지 기다린다는 의미이다. 크롤링시, 클릭하는 상호작용이 필요하여 해당 부분을 추가해서 오류 가능성을 줄였다.
변경점 2. 크롤링 드라이버 설정
options.add_argument("--disable-gpu")
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)
해당 옵션과 드라이버 실행 관리 객체 설정을 추가했다.
옵션의 경우, 추후 GPU 사용시 비용이 추가되거나 굳이 GPU가 필요한 작업이 아닐것으로 판단되어 제어하였다.
그리고, ChromeDriverManager를 활용하여 ChromeDriver를 자동 설치하도록 하여 ChromeDriver 버전 업데이트에 따른 오류 가능성을 줄였다.
추후, 필요 옵션을 찾아보며 필요하다면 추가할 예정이다.
모든 코드는
https://github.com/software-gathering/gather-be2
GitHub - software-gathering/gather-be2
Contribute to software-gathering/gather-be2 development by creating an account on GitHub.
github.com
여기서 확인 가능하다.
'Project > Gathering' 카테고리의 다른 글
유저 회원가입, 로그인, 정보 수정 구현 (Spring Security) (1) | 2024.12.20 |
---|---|
Gathering Backend 구현 1 (프로젝트 생성 및 엔티티 설계) (0) | 2024.11.26 |
Gathering 기획 3 (1) | 2024.11.21 |
Gathering 기획 2 (0) | 2024.11.16 |
Crawling 서버 구현 (1) | 2024.11.12 |