[weathervely 5] 코디 크롤링
크롤링 데이터
지난 2주간 크롤링을 시작하였다. 먼저 네이버 스토어에 있는 업체를 크롤링을 하기 시작하였다.
크롤링 작업 프로세스 생각
먼저 이 쇼핑몰은 다행히 제품 상세 페이지에 코디 페이지가 있어 크롤링을 하기에 용이했다. 코디의 이미지와 코디에 속한 옷들이 나열 되어 있어, 우리 DB에 옮기기에 좋은 사이트 였다. 그렇다면 어떻게 크롤링을 할 것인가?
옷 데이터 먼저 넣기
먼저, 옷 데이터를 넣어야 나중에 코디 데이터와 매핑을 할 때 편리하지 않을까 라는 생각을 했다. clothes 테이블과 closet(코디) 테이블이 다대다 관계로 이뤄져 있기 때문이다. 먼저 카테고리 코드와 아이템 코드를 가져와야 하는데, 그 이유는 상세페이지 url에 카테고리 코드와 아이템 코드가 들어가기 때문이다. 그래서 내가 생각한 프로세스는 이렇다.
- 카테고리를 선택한 옷 리스트가 불러오는 페이지에서 ‘카테고리 이름, 카테고리 코드, 옷 이름, 아이템 코드’를 먼저 가져와 배열에 담는다.
- 배열을 for문으로 돌면서 base가 되는 상세페이지 url에 카테고리 코드와 아이템 코드를 넣어 상세페이지를 크롤링 한다.
- 상세페이지에 있는 소매 기장, 총 기장, 다리 기장 등등 정보를 배열에 다시 담는다.
- DB에 넣는다.
카테고리 문제점
이렇게 하려고 했는데, 카테고리에 ‘셔츠/블라우스’와 같이 비슷한 카테고리를 묶어서 관리하는 카테고리도 존재를 했다. 그래서 상세페이지에 보니, 상세 정보표에 ‘종류 : 블라우스’ 이런식으로 분류를 하고 있어서 카테고리를 분류를 할 수 있었다.
코디 데이터 넣기
아이템 데이터를 담고 있는 배열에서 상세페이지로 들어가 코디 탭에 있는 이미지와, 하위에 있는 아이템의 정보를 받아 closet 테이블에 데이터를 넣고 clothes 테이블과 매핑을 시켜야 한다. 하지만 여기서 문제점과 이슈가 많이 발생 하였다.
코디 탭의 태그들을 못 불러옴
코디 탭의 부모 태그를 find를 해서 콘솔에 찍어 봤더니, 빈 배열로 계속 나왔다. 분명 개발자 도구 탭에서 봤을 땐 자식 태그들이 있는데, 안담겨졌다. 그래서 태그들을 봤더니 ::before 라는 태그가 있었다. 그래서 이거 때문에 안되나? 라는 생각이 들어 한번 검색을 해봤다.
before은 가상 선택자 이다. 가상 선택자로 생성된 콘텐츠는 브라우저에서 렌더링될 때 동적으로 생성되는 경우가 많다.
나는 bs4로 정적 크롤링을 하고 있었다. 하지만 정적으로 하다 보니 ::before 태그들로 묶인 태그들이 생성이 되질 않아서 가져오지 못하는 것이었다.
그래서 selenium을 사용하여 동적인 크롤링을 진행 하기로 했다. 상세페이지에 접근을 한 뒤 코디 탭 버튼을 클릭하고, 코디 탭의 부모 태그를 find를 했더니 다행히 데이터가 잘 들어와졌다.
코디 탭의 이미지 이슈
우리는 코디의 이미지가 모델이 서 있고, 기본적으로 목 부터 발목 까지가 나온 이미지를 원한다. 하지만 코디 탭에 있는 이미지에서 우리가 원하는 이미지가 없는 경우도 있다. 기획자 분한테 이슈를 말했더니, 이 이미지는 사용하지 못한다 라는 답변을 들었고 다른 이미지를 사용해야 한다 라는 답변을 들었다.
이렇게 된다면 여러가지 문제가 생기게 되는데,
- 코디 이미지들이 여러개가 있는데 모두 같은 class를 가지고 있어 특정한 이미지를 가져오기 힘들다.
- 이 이미지 중에서 어떤 것을 사용해도 되는지 선택을 해야 한다.
- 선택한 이미지의 코디의 하위 아이템들의 정보를 가져오기 힘들다.
이런 이슈가 생기게 된다.
코디 탭이 없는 쇼핑몰은?
이 부분도 위와 동일한 문제점을 가지게 된다. 우리가 크롤링 하기로 한 사이트가 4개가 있는데, 그중 3개는 코디 탭이 없다. 이러한 부분들도 생각해 봐야한다.
구글 vision ai
그래서 생각 한 것이 이미지를 분석해주는 ai를 사용해서 하위 아이템의 정보를 가져오자 였다. 사용한 후기는 다음 글에서 자세히 쓰겠다.
느낀점
우리가 사용하고자 하는 데이터의 정보를 가지고 있는 쇼핑몰 사이트는 많이 없다. 그래서 이 데이터를 어떻게 가공을 하고, 우리에게 맞는 데이터 형식으로 바꾸는가 가 많은 핵심이다. 이럴 때, 우리의 DB를 바꿔야 하는가, 아니면 기획을 바꿔야 하는가에 대한 고민을 많이 하게 되었다. 이러다가 우리의 기획이 무너지는 것이 아닌가 라는 생각이 들었고, 어떻게든 우리가 원하는 데이터로 가공을 하고 받아올 수 있게끔 해야겠다는 생각을 하였다.
댓글남기기