메인 콘텐츠로 건너뛰기

페이지 넘기기("다음" 버튼이 없을 때)

이번 주에 업데이트함

웹사이트를 본격적으로 스크래핑하려면, 여러 페이지를 이동하면서 각 페이지의 데이터를 추출해야 하는 경우가 많습니다. 이때 가장 먼저 해야 할 일은 해당 웹사이트가 어떤 방식의 페이지네이션(페이지 넘기기)을 사용하고 있는지 파악하는 것입니다.

대표적인 페이지네이션 방식에는 다음과 같은 유형이 있습니다.

  • ‘다음’ 버튼을 사용하는 경우

  • ‘다음’ 버튼 없이 번호 링크로 이동하는 경우

  • 무한 스크롤 방식

  • ‘더 보기’ 버튼을 사용하는 경우

이 튜토리얼에서는 그중에서도 페이지에 ‘다음’ 버튼이 없는 경우,
즉 아래 예시처럼 페이지 번호(1, 2, 3 …)를 직접 클릭해야 다음 페이지로 이동하는 방식의 페이지네이션을 만드는 방법을 다룹니다.

dwpnnb2.png
dwpnnb1.png

1. 페이지네이션 생성 및 XPath 수정하기

이 문제를 해결하는 핵심은 항상 ‘다음 페이지 번호’를 정확히 찾을 수 있는 XPath를 작성하는 것입니다.

전체 과정은 다음 두 단계로 나뉩니다.

1 단계:

현재 페이지 기준으로 다음 페이지로 이동해 주는 요소의 XPath를 작성/ 찾기

  • 예:

    • 현재 1페이지 → 2페이지 클릭

    • 현재 2페이지 → 3페이지 클릭

    • 이런 식으로 계속 진행

2 단계:

Octoparse 워크플로우 안에서 페이지네이션의 XPath 수정

참고:
XPath에 대한 지식은 필수는 아니지만 Octoparse에서 원하는 대로 정확한 작업을 만들기 위해서는 매우 유용합니다.
자세한 내용은 XPath 정의 및 Octoparse에서 XPath 사용 방법 튜토리얼을 참고해 주세요.

복잡하게 느껴지시나요?

너무 걱정하지 마세요! 아래 예시 하나를 통해 살펴보겠습니다.

아래 링크를 예시로 한 번 따라해 주세요.
https://www.yna.co.kr/culture/all/1

  • 페이지에서 숫자 2 버튼 클릭

  • 루프 클릭 선택합니다.

이렇게 하면 페이지네이션/ 페이지 넘기기가 자동으로 생성됩니다.

이제 페이지네이션에 사용할 XPath를 작성해야 합니다.

*여기서 주의해야 할 점은 페이지마다 클릭해야 하는 버튼은 달라지지만 다음 페이지 버튼은 항상 ‘현재 페이지 버튼 바로 뒤’에 위치합니다.
따라서 우리가 해야 할 것은

  1. 현재 페이지 버튼을 먼저 찾고

  2. following-sibling을 이용해 다음 페이지 번호를 찾으면 됩니다.

구체적인 방법은 아래와 같습니다.

  • 예시 URL을 브라우저(예: Chrome)에 붙여넣어 엽니다.

  • 페이지 번호 영역에서 1번 페이지를 마우스 오른쪽 클릭 → 검사 선택

  • 화면에서 강조 표시된 HTML 코드가 1페이지 버튼에 해당합니다.

  • 이제 현재 페이지 번호를 찾는 XPath를 작성합니다.

    //strong[@class="num on"]

  • 메뉴의 '찾기'란(Ctrl+F)에 입력하면, 현재 페이지(1페이지) 버튼이 정상적으로 선택되는 것을 확인할 수 있습니다.

  • 이제 다음 페이지 번호를 가리키는 XPath를 작성하면 됩니다.

    //strong[@class="num on"]/following-sibling::a[1]

  • 마지막으로 워크플로우에서 페이지 넘기기를 클릭하여 XPath 입력란에 아래 XPath를 입력 및 적용하시면 완성입니다.


2. ‘배치 생성’을 사용해 대량의 페이지 URL 생성하기

여러 페이지를 수집하는 또 다른 매우 효율적인 방법은 먼저 모든 페이지의 URL을 한 번에 생성한 뒤 해당 URL 목록을 기반으로 작업을 구성하는 것입니다.

페이지 URL을 자세히 살펴보면 아래와 같은 패턴이 보일 수 있습니다.

  • 페이지 번호만 바뀌고

  • 나머지 URL 구조는 동일한 경우

이런 패턴이 있다면 배치 생성 기능을 사용해 URL 목록 일괄 가져오기 할 수 있습니다.
URL 목록이 생성되면, Octoparse가 해당 링크들을 자동으로 순회하며 필요한 만큼의 페이지 데이터를 자동으로 수집합니다.

답변이 도움되었나요?