📌 크롤링 시 IndexError 예외처리 방법 (ranking_weeks 예시)
크롤링 중 ranking_weeks 같은 데이터가 있을 수도, 없을 수도 있을 때 발생하는 IndexError를 방지하는 법을 알아보겠습니다.
🚀 1️⃣ 질문 분석 및 핵심 키워드
- 질문 요약: 크롤링 시 데이터가 없는 경우 IndexError 발생
- 키워드:
- Selenium: 웹 자동화 도구
- IndexError: 리스트 인덱스 접근 에러
- split(" "): 문자열 나누기
- 조건문/예외처리: 안전한 코드 작성법
✅ 2️⃣ 해결 방법 체크리스트
- 에러 원인 분석:
- 데이터가 없으면 split(" | ") 결과가 짧아짐
- 추가 split(" ")에서 [2]번 인덱스가 없을 수 있음
- 해결 방법:
- 조건문(if): 리스트 길이를 확인 후 접근
- 예외처리(try-except): 예외 발생 시 기본값 할당
- 테스트 케이스:
- 데이터가 없는 경우(link_list[0])
- 데이터가 있는 경우(link_list[1])
💻 3️⃣ 실전 코드 예시
🔸 조건문 활용 예시:
gd_best_text = browser.find_element(By.CLASS_NAME, 'gd_best').text
parts = gd_best_text.split(" | ")
if len(parts) > 1:
sub_parts = parts[1].split(" ")
if len(sub_parts) > 2:
ranking_weeks = sub_parts[2][:-1]
else:
ranking_weeks = "정보 없음"
else:
ranking_weeks = "정보 없음"
🔸 예외처리 활용 예시:
gd_best_text = browser.find_element(By.CLASS_NAME, 'gd_best').text
try:
ranking_weeks = gd_best_text.split(" | ")[1].split(" ")[2][:-1]
except IndexError:
ranking_weeks = "정보 없음"
🧠 4️⃣ 실무 팁 및 주의점
- 한 번만 find_element를 호출한 후, 결과를 변수에 저장하여 중복 방지
- 웹페이지가 자주 변경될 경우 방어적 코드 작성이 필수
- 조건문 사용 시 디버깅 용이, try-except는 빠르게 예외처리 가능
🔥 5️⃣ 좋은 질문 예시
- ❌ "IndexError가 나요."
- ✅ "IndexError가 발생하는 경우 예외처리 방법과 단계별 인덱스 확인 로직을 코드로 보여주세요."
이렇게 질문하면 정확한 답변을 얻을 수 있습니다! 🚀
'기술블로그' 카테고리의 다른 글
📌 MySQL 테이블에서 중복된 데이터를 효과적으로 삭제하는 방법 (0) | 2025.03.25 |
---|---|
📌 MySQL 데이터베이스 정리 (with 크롤링 in Selenium, PymySQL) (0) | 2025.03.25 |
🐍 Python + PyMySQL로 MySQL 리팩토링(2/2) (0) | 2025.03.21 |
🐍 Python + PyMySQL로 MySQL 고객 정보 다루기(1/2) (0) | 2025.03.21 |
Database - SQL에서 JOIN을 언제, 왜, 어떻게 사용할까? (0) | 2025.03.21 |