웹사이트에서 테이블 형식의 데이터 뽑아내기


뭐가 하고싶은 건데?

결론부터 얘기하자면, 요 사이트에서 원석 뿌리는 이벤트만 골라서 보고 싶다.

첫번째 단계 - 필요한 데이터를 구조화해서 뽑아내기

참고자료

분석 대상

일단은 페이지에서 다음 데이터만 뽑아내서 콘솔에 뿌리고, ‘특별 방송’, ‘원석’ 등의 키워드에 반응해서 브라우저를 띄우는 방식을 생각해 봤다.

페이지 구조가 빈번하게 바뀔 필요는 없어 보이니, 그냥 playwright를 써서 페이지를 바로 열고, DOM 접근을 해서 항목들을 일일이 뽑아내는 방식을 사용했다.

두번째 단계 - 구조화된 데이터를 Google sheet에 보관해볼까?

키워드를 하드코딩하는게 영 번거로운 노릇이다. ML을 끼얹어볼까? 그럴려면 데이터를 좀 쌓아야 할 것 같은데?

예전에 텍스트 파일에 CSV 느낌으로 쌓아봤었는데 활용하기가 영 번거롭더라. 그렇다고 SQLite에 저장하면 또 접근이 쉽지 않다. 엑셀 / 구글 Sheets에서 제공하는 UI를 최대한 활용할 수 있는 방법을 생각해보니 구글 Sheets에 한땀 한땀 기록하는 방식을 채택했다.

매번 느끼는 것이지만 구글 API는 연동이 영 번거롭다. 이번에도 무슨 OAuth니 뭐니 앱 생성하고 오프라인 앱이다 뭐다 로그인을 하고 자시고… 해야하나 머리가 아팠는데, 생각해보니 이번엔 Sheet를 박아놓고 데이터만 추가하면 되는 거니까 사용자 접근 권한이 필요하진 않은 사례라서 그냥 Google cloud의 service account를 생성하고 Sheet 접근 권한을 직접 부여하는 방식으로 해 봤는데 OAuth보다 부담도 적고 좋았다.

service account가 사용자 로그인과 같은 내부 id 체계를 공유하고, 그렇기 때문에 그냥 service account email을 바로 파일 공유하기에 때려박아도 문제없이 동작한다는 사실을 그 ‘내부 id 체계’의 존재를 알지 못하면 짐작하기 어려운데(아니, Google cloud의 내부 객체인 줄 알았던 service account가 사실은 구글 로그인 계정과 동등한(?) 객체라고?) 이걸 더 알기쉽게 설명하기도 어려운 노릇이다.

TODO - 세번째 단계 - 모델을 만들어 봐?

아직 데이터를 쌓기 시작한지 얼마 되지 않아서 모델을 만들 자신감이 없는 상태다. 예전 데이터를 더 긁어서 해볼까? 아 귀찮은데…