데이터 수집을 하는 과정에서... 다음페이지가 없는 경우

안녕하세요.

데이터를 웹크롤링하려고 하는데… 유튜버 보고 따라해도 잘되지 않는 부분들이 너무 많아서…

이렇게 글을 남깁니다.

우선 제가 웹크롤링하고자하는 데이터는 네이버 베스트셀러 순위입니다.

우선 1주차씩 데이터 크롤링을 하려고 하는데, 어려운 관문이 하나둘이 아니네요;

  1. 다음페이지 넘어가는 버튼이 없고 1,2,3,4,5,6 이런 식으로 페이지 번호로 되어있는 경우 어떤 명령어를 사용해야될까요?

  2. 2009년 10월 4주차부터 2021년 6월 3주차까지 데이터를 한번에 웹크롤링 가능할까요… while문을 사용하여?

고수님들의 도움 부탁드립니다.

감사합니다.

안녕하세요.
웹사이트에서 반복적인 작업으로 뭔가 추출할 경우 약간의 꼼수가 필요할 수 있습니다. 말씀하신 네이버 베스트셀러 순위는 브라우저 개발탭에서 URL을 확인해보니 아래와 같이 페이지를 조회하더군요.

아래 링크는 교보문고, 6월3주차, 1번째 페이지에 대한 정보입니다.

https://book.naver.com/bestsell/bestseller_body.nhn?cp=kyobo&cate=total&bestWeek=2021-06-3&indexCount=&type=list&page=1

while로 반복할때, 해당 URL의 Get파라메터인 bestWeek 정보와 page를 활용하여 반복적으로 브라우저 페이지를 변경해주면 될 거 같습니다.

정확한 방법입니다. 참고해보세요.
참고로 시퀀스 안에서 하는게 아니라, 플로우차트에서 그려줘야 합니다.

  1. 전체 페이지수를 get text 등의 명령으로 추출해 내서 Int 형식의 변수에 담아준다.

    • 예) get_page 라는 변수에 전체 페이지수를 담아줍니다.
  2. Int형식의 변수를 추가해서 다음페이지를 의미하는 버튼을 인식하게 해준다.

    • cnt_pagenum = 2
    • 이런식으로, 다음페이지가 2페이지 부터일테니, 기본값을 2로 선언해줍니다.
  3. 시퀀스를 하나 만들고, 그 아래 데이터 스크래핑을 한다. - 다음페이지 있느냐고 물어보면 아니오.

    • 이렇게 해서 1번페이지를 스크래핑 합니다.
  4. 그아래 Flow Decision을 만든다.

    • True일때 : cnt_pagenum < get_page + 1 조건을 지정하고
    • Click 메뉴를 이용해서 2번 페이지를 누르도록 지정합니다.
    • 전체 페이지수 보다, 현재의 페이지가 적다면, 다음페이지를 누르게 하려는 의도입니다.
  5. 위에서 Click 메뉴의 selector 편집을 눌러본다

    • aaname = ‘2’ 라고 되있는 부분이 나오는데, ‘2’ 부분을 눌러 마우스 우클릭 해서 “변수 선택” 을 눌러준다
    • 변수에 cnt_pagenum 을 지정해준다
  6. 그아래 변수를 하나 더 선언해서

    • cnt_pagenum = cnt_pagenum + 1 이라고 해준다
    • 2번 페이지를 지났으니, 그다음에 +1 해서 3번 페이지로 인식하라고 해주는 겁니다
  7. 그다음에 플로우를 3번 과정의 데이터스크래핑으로 이어준다.

    • 스크래핑 하고 3번페이지를 누르고, +1 해서 cnt_pagenum이 4가 되겠지요…
    • 3번페이지 스크래핑 하고 +1 해서 5로 올려주고~~반복합니다.
  8. 4번 절차에서, 전체 페이지 수만큼 다 페이지 스크래핑을 했다면, False가 되겠지요.

    • False에 되었을때 스크래핑 했던 DataTable을 엑셀로 담아주면 됩니다.

너무 너무 설명을 잘하십니다. 좋은 정보 너무 감사드립니다. 감탄했네요 ㅎㅎ