Crawling이란?

페이지 데이터를 추출하는 Scraping과 개념과 달리 페이지에 있는 링크를 따라
새 페이지로 연결되는 것과 새 페이지의 링크를 계속해서 찾아 다른 새 페이지로 연결되는 것을 의미 합니다.
웹 크롤러는 페이지의 모든 링크를 따라가며 새 페이지로 이동하고 크롤링 할 새 링크나 페이지가 더 이상
없을 때까지 해당 프로세스를 계속하는 소프트웨어 프로그램입니다.
웹크롤러는 로봇, 스파이더, 검색 엔진 봇 등 다양한 이름으로 알려져 있습니다.
봇이라고 불리는 이유는 할당된 작업이 있고, 링크에서 링크로 이동하며, 각 페이지의 정보를 캡쳐하기 때문입니다.
우리가 웹 페이지의 데이터를 수집할 때 python으로 하는 경우 BS4와 Selenium을 가장 많이 활용합니다.
오늘은 Selenium을 사용할 때 많이 나는 오류에 대해 알아보도록 하겠습니다.
1. 사이트 로딩 기다리는 필요성
우리가 사이트를 Crawling할 때 원하는 데이터 및 버튼이 존재하지 않을 수 있습니다.
Selenium은 기본적으로 사이트 로딩을 기다리는데 HTTP Response 및 Rendering을 기다립니다.
그렇기에 정상적으로 Crawling하기 위해서는 사이트의 로딩이 필요합니다. ExpectedCondition
Selenium 기다리는 함수들 알아두면정말좋게활용할수있습니다.
title_is
=> 페이지 제목 확인에 대해 기다림
title_contains
=> 제목에 대소문자가를 구분하는 하위 문자열이 포함되어 있는지 확인
presence_of_element_located
=> 페이지의 DOM에 요소가 있는지 확인하기 위한 기다림
visibility_of_element_located → O
=> 요소가 페이지의 DOM에 존재하고 표시되는지 확인하기 위한 기다림
visibility_of
=> 페이지의 DOM에 존재하는 것을 알려진 요소가 표시되는지 확인하기 위한 기다림
presence_of_all_elements_located
=> 웹페이지에 적어도 하나의 요소가 존재하는지 확인하기 위한 기다림
text_to_be_present_in_element → O
=> 주어진 텍스트가 지정된 요소에 존재하는지 확인하기 위한 기다림
text_to_be_present_in_element_value
=> 주어진 텍스트가 요소의 값에 존재하는지 확인하기 위한 기다림
frame_to_be_available_and_switch_to_it → O
=> 주어진 프레임이 전환 가능한지 확인하기 위한 기다림
invisibility_of_element_located
=> 요소가 DOM에 표시되지 않거나 존재하지 않는지 확인하기 위한 기다림
element_to_be_clickable
=> 요소 확인에 대한 기대치가 표시되고 클릭할 수 있도록 활성화
staleness_of
=> 요소가 더 이상 DOM에 연결되지 않을 때 까지 기다림
element_to_be_selected
=> 선택을 확인하기 위한 기대가 선택
element_located_to_be_selected
=> 위치할 요소에 대한 기대가 선택
element_selection_state_to_be
=> 주어진 요소가 선택되었는지 확인하기 위한 기대값
element_located_selection_state_to_be
=> 요소를 찾고 지정된 선택 상태가 해당 상태인지 확인하기 위한 기대 값
alert_is_present
=> 현재 alert이 있는지 확인하고 있을 경우 alert로 전환하기 위한 값
위 코드 말고도 다른 expected_conditions가 많이 있는데요
위에 제가 O 표시한 것은 제가 selenium을 하면서 많이 사용한 것들만 표시를 해놨습니다.
저도 회사에서 새로운 서비스를 만들었을 때 Selenium을 활용하여 UI Tesing을 진행한 적이 있는데
그때 강력하다고 생각을 했습니다.
다만 크롤링을 할 때 가장 주의해야할 점이 있습니다.
여러분들이 어떠한 웹에서 데이터를 추출할 때는 필수적으로 'robots.txt'를 확인하여
User-agent: *
Allow: / -- 크롤링 가능
---------------------------
User-agent: *
Disallow: / -- 크롤링 불가
Allow인지 Disallow인지를 확인하고 진행하기를 바랍니다.
괜히 Disallow인데 법적문제까지 가면 너무 곤란해지는 상황이 오니 주의하여 크롤링하시기를 바랍니다.
그럼 오늘도 파이팅입니다!!
REFERENCE
selenium.webdriver.support.expected_conditions — Selenium 4.10 documentation
An expectation for checking that an element, known to be present on the DOM of a page, is visible. Visibility means that the element is not only displayed but also has a height and width that is greater than 0. element is the WebElement returns the same
www.selenium.dev
'python > selenium' 카테고리의 다른 글
Playwright vs Selenium Grid 비교 리포트 0 | 2025.04.10 |
---|---|
selenium 로봇 피하는 방법 0 | 2025.03.25 |
Selenium alert 처리 방법 0 | 2023.08.25 |