마찬가지로 이 뉴스레터 에디터인 저 또한 이 부분을 어떻게 더 쉽게 풀면 좋을지, 고민이 참 많았습니다. 그러다 슥 떠오른 생각!
"챗 GPT한테 써달라고 하면 안되나?"
그래서 바로! 실험해 보았습니다. 두두둥🥁
🖥️ 이런 웹페이지 구성, 익숙하지 않나요?
위의 이미지는 쇼핑몰 등에서 자주 볼 수 있는 웹페이지 구성입니다.
제품의 상세페이지 안에 리뷰 탭이 존재하고, 리뷰 탭을 클릭 한 후에야 리뷰를 볼 수 있는데,
리뷰들이 페이지네이션 구성으로 또 나뉘어 있군요.
흠, 어떻게 추출하면 좋을까요?
잠시만요! 여러 페이지를 추출하기 위한 설정을 붙이기 전에,
간단히 ‘재추출’이 가능한 페이지인지 먼저 살펴보겠습니다.😎
방법은 매우 간단한데요. 원하는 데이터가 보이는 상태의 URL을 복사하여 구글의 시크릿 모드를 켜고, 해당 주소만으로 접속을 해보는 것입니다.
➲ 시크릿 모드 켜기 단축키 Win : Ctrl + Shift + N / Mac : Command + Shift + N
이번에 예시로 든 사이트에서 리뷰가 보이는 페이지의 URL을 복사하여 시크릿 모드에서 다시 접속해보니 위 이미지와 같이 리뷰탭이 아닌 첫번째 상품설명 탭이 열려있는 상태로 접속된다는 것을 알 수 있었습니다.
음? 갑자기 이걸 왜 확인하는거죠??🙄
예를 들어 위와 같은 상황에서는 리스틀리로 1페이지에 있는 리뷰 추출이 성공하더라도,
다른 페이지들도 추출하기 위해 설정을 더하고 재추출을 할 경우, URL로만 접근하는 웹스크래핑봇은 시크릿모드에서 본 것과 같이 ‘상품 설명' 탭으로 접근하여 리뷰를 찾으려 할 것이기 때문이에요. 그렇기 때문에 URL만으로 데이터가 있는 페이지에 접근하기 어렵다면 실패가 예정되어있는 것이죠.😭😭😭😭😭
+ 비슷한 케이스로는 로그인 후에만 보이는 페이지, 특정 요소를 클릭했을 때만 뜨는 팝업창 속 정보 등을 들 수 있습니다.
🤖 그럼 잠시 리스틀리 봇이 되어 '성공할 수 있는' 추출 단계를 생각해보겠습니다.
1. 추출할 데이터가 무엇인지, 화면상의 위치를 지정하여 기록한다.
☛ 리스틀리 'PARTS'로 추출할 영역을 선택하여 1차 추출
2. URL만으로 접근했을 때, 다시 리뷰탭으로 가는 방법을 추가적으로 입력한다.
☛ '액션스크립트'로 추출 전, 리뷰 버튼을 클릭하는 동작 추가
3. ‘리뷰 탭 안에서’ 각 페이지에 나뉘어져있는 정보를 추출한다.
☛ '페이지네이션 템플릿'으로 여러 페이지 정보 자동 추출
오, 좋은 시나리오 같아요. 그럼 위 단계에 따라, 한 단계씩 진행해보겠습니다 :)
1. 리스틀리 PARTS로 리뷰 데이터 영역을 선택하여 추출합니다.
2. 결과창을 확인하고 설정창으로 들어갑니다.
첫 번째 탭에 1페이지에 있는 10개의 리뷰들이 추출된 것이 보이네요. 데이터가 있는 탭의 위치를 확인한 후, 위 이미지에 표시된 브라우저 설정 메뉴를 클릭해 설정창으로 진입합니다.
3. 다시 웹페이지로 돌아와, 리스틀리 PARTS를 실행하고 리뷰 탭의 CSS셀렉터 값을 확인합니다. (정확도를 높이기 위해 웹페이지를 새로고침 한 후 클릭해야할 요소가 활성화된 상태에서 값을 확인하세요)
4. 이 부분이 이번 뉴스레터의 핵심이죠!
챗 GPT에게 자바스크립트 코드를 물어봅니다.(이번 사례에서는 무료 GPT 3.5를 사용했습니다.)
제가 입력한 프롬프트는 다음과 같습니다.
“클릭요소의 셀렉터 값" 이 CSS셀렉터를 클릭하고, 1초 대기하는 자바스크립트 코드를 만들어줘."
**주의 : 사이트별, 케이스별로 “클릭할 버튼의 셀렉터 값”은 모두 다릅니다. 프롬프트의 빨간 글씨로 표시된 구간에 3번 단계에서 확인한 셀렉터를 붙여넣으시면 됩니다.
그리고 이미지에 빨간 네모로 표시된 부분을 클릭해 GPT가 만들어준 코드를 복사합니다.
5. 리스틀리 설정창으로 돌아와 액션스크립트 란에 GPT가 만들어준 코드를 붙여넣습니다.
6. 여러 페이지로 나뉘어진 리뷰들을 전부 추출하기 위해 액션템플릿-페이지네이션 세팅을 추가합니다.