메인 콘텐츠로 건너뛰기

Octoparse에서 마지막 페이지를 계속 수집하는 경우 해결 방법

이번 주에 업데이트함

여러 페이지에 걸쳐 데이터를 추출하는 경우는 매우 일반적입니다. 대부분의 프로젝트에서는 단일 페이지의 데이터만으로는 충분하지 않기 때문에 페이지네이션(페이지 넘기기 기능)을 활용한 수집이 필요합니다.

하지만 Octoparse가 마지막 페이지에 도달한 후에도 수집을 멈추지 않고 계속 진행되는 문제를 겪고 있다면, 이는 Octoparse가 마지막 페이지에서도 여전히 ‘다음’ 버튼을 인식하고 클릭하고 있기 때문일 가능성이 큽니다. 이와 같은 현상은 일반적으로 무한 루프(endless loop) 문제라고 합니다.

이 문제를 해결하는 방법은 두 가지가 있으며, 사용 목적에 따라 적합한 방법을 선택하시면 됩니다.


방법 1. 반복 종료 조건 설정

중복 옵션을 사용하면, 페이지 넘기기 루프를 특정 횟수만큼 반복한 후 자동으로 종료할 수 있습니다.

예를 들어, 처음 50페이지까지만 데이터를 수집하고 싶다면, 반복 횟수를 50으로 설정하면 Octoparse가 ‘다음’ 버튼을 50번 클릭한 후 페이지 넘기기 루프를 종료합니다.

이 방법은 수집해야 할 페이지 수를 정확히 알고 있는 경우 가장 간단하고 효과적인 해결책입니다.

설정 방법

  1. 페이지 넘기기 설정으로 이동합니다.

  2. 설정 화면 하단에서 중복 옵션을 찾습니다.

  3. 체크박스를 선택한 후 반복 횟수를 입력합니다.

  4. 적용을 클릭하여 설정을 저장합니다.


방법 2. XPath 수정

중복 횟수의 종료 조건 설정으로 문제가 해결되지 않는 경우, 페이지 넘기기 루프의 XPath를 수정하는 방식으로 해결해야 합니다. Octoparse는 XPath를 사용하여 다음 페이지를 넘길 수 있도록 하는 페이지 내 요소(예: ‘다음’ 버튼)를 찾습니다. 대부분의 경우 XPath는 자동으로 정확히 생성되지만 일부 상황에서는 수동으로 다시 수정할 수도 있습니다.

특히 무한 루프 문제가 발생하는 경우에는, 마지막 페이지를 제외한 페이지에서만 ‘다음’ 버튼을 정확히 인식할 수 있는 XPath를 작성해야 합니다.

팁:
XPath 작성 시 Chrome에서 우클릭으로 검사 기능을 활용하시는 것을 추천합니다. 또한 XPath 기본 개념은 튜토리얼 XPath 정의 및 Octoparse에서 XPath 사용 방법을 참고하세요.

예제를 통한 XPath 작성 방법

아래 스크린샷을 보면 첫 페이지와 마지막 페이지 모두에서 옥토파스가 자동 생성한 XPath로 ‘다음’ 버튼이 선택되는 것을 확인할 수 있습니다.

  • 첫 페이지

  • 마지막 페이지

이제 첫 페이지와 마지막 페이지의 버튼 차이점을 찾아야 합니다. Chrome에서 버튼을 우클릭한 후 검사를 통해 HTML 코드를 확인합니다.

  • 첫 페이지

  • 마지막 페이지

확인 결과, 첫 페이지의 버튼 HTML 코드와 마지막 페이지의 버튼 HTML 코드에는 모두 aria-disabled 속성이 존재하지만 값은 다르다는 것을 알 수 있습니다.

이를 활용하여, 마지막 페이지가 아닐 때만 ‘다음’ 버튼을 선택하는 XPath를 작성합니다.

예시 XPath

//LI[contains(@class,"ant-pagination-next") and not(@aria-disabled="true")]

이 XPath를 검사 도구 내 검색창에 입력하여 정상적으로 동작하는지 확인합니다.

  • 첫 페이지

  • 마지막 페이지

마지막 페이지에서는 매칭되는 노드가 없으며 이는 원하는 결과입니다.
필요하다면 2페이지, 3페이지 등에서도 정상적으로 ‘다음’ 버튼이 선택되는지 추가로 확인할 수 있습니다.

수정한 XPath 적용 방법

  1. 페이지 넘기기 설정으로 이동합니다.

  2. 기존 XPath를 새로 작성한 XPath로 교체합니다.

  3. 적용을 클릭하여 설정을 저장합니다.

마무리

무한 루프 문제는 생각보다 어렵지 않게 해결할 수 있습니다. 수집 요구 사항에 따라 중복 횟수를 설정하거나, XPath를 수정하여 문제를 해결할 수 있습니다. 상황에 맞는 방법을 선택해 안정적인 데이터 수집을 진행해 보세요.

답변이 도움되었나요?