[데이터 엔지니어링 데브코스 2기] TIL-5주차-파트04 [프로젝트]크롤한 웹데이터로 만들어보는 웹사이트(3)

이재호·2023년 11월 8일
0

1. 진척 사항 및 향후 계획

1. 진척 사항

코디숍 페이지에서, 모든 페이지의 코디리스트와 코디 정보를 추출(크롤링and스크래핑)하는 데 성공하였습니다.
따라서 최종적으로 추출한 데이터의 종류는 다음과 같습니다.

  1. subject: 제목. ex)"styles-1511"(string)
  2. date: 게시된 날짜. ex)"2023-11-07"(string)
  3. category: 스타일 카테고리. ex)"댄디"(string)
  4. views: 조회수. ex)1100(int)
  5. img_src: 이미지 URL. ex)"https://.*"(string)
  6. tags: 태그 목록. ex)["#겨울", "#깔끔한", ..](list)
  7. brands: 브랜드 목록. ex)["나이키", "아디다스", ..](list)
  8. names: 상품명 목록. ex)["레더 크롭 숏 패딩", "우먼스 스탠다드 코듀로이 오버롤", ..](list)
  9. prices: 현재 가격 목록. ex)[12000, 50000, ..](list). 취소선 없는 가격.
  10. del_prices: 삭제된 가격 목록. ex)[22000, 60000, ..](list). 취소선 있는 가격.

크롤링 및 스크래핑 작업에 소요되는 시간은 다음과 같았습니다.

  • 70 페이지 -> 2시간 30분 소요.
  • 1 페이지 당 약 28초 소요.
  • 1 코디 당 약 0.9 ~ 1.0초 소요.

따라서 전체 코디 수 31,983개에 대해서 총 8시간 20~30분 정도 소요될 것으로 예상됩니다.

2. 향후 계획

코디숍 페이지에 대한 크롤링 및 스크래핑 작업을 현재 jupyter lab으로 실행을 하고 있는 상태라 몇 가지 애로 사항이 있어 보입니다.

  1. print() 방식으로 디버깅을 하다 보니, 브라우저에서 렉이 너무 많이 걸린다.
  2. 단순히 python의 변수 memory에다 값을 저장하고 있어서, 주피터랩이 꺼질 경우 값이 날라간다.

향후 계획은 다음과 같습니다.

1. print() 대신, txt파일에 write하는 형식으로 log.txt 파일을 만든다.
2. DB에 연동하는 것은 차후 계획으로 놔두고, 우선 csv 파일에 저장을 해 놓는다.
3. 현재 코디숍 페이지에 대해서만 실행 중이기에, 서버 컴퓨터에서 코디맵 페이지에 대한 작업도 추가 실시한다.




2. 회의 내용

총 두 번의 회의 진행.

  • 08:30)

    • 크롤링 및 스크래핑 할당된 영역에 대한 의사소통의 문제가 있었습니다. 제가 해야 하는 파트를 넘어서 초과된 파트에 대해서 이미 진행을 하였기에 같이 하는 다른 팀원 분이 해당 작업을 양도해 주었습니다. => 회의를 거친 후, 보고서 등을 통해서 서로가 이해한 내용이 맞는지 확인하는 시간이 필요하다고 느꼈습니다.
    • 파일 구조 및 DB 관련 내용 정리.
    • 간단한 로직 이해 확인. scrapping -> DB -> django -> plot -> 이미지 저장(갱신).
    • 장고에서 DB를 가져올 때, 동기식 or 비동기식 처리 중 어느 것으로 진행할 지. => 스크래핑에서 적재가 끝나고 나서 동기식으로 처리하는 방식으로 결정.
  • 16:00)

    • 현업 경험이 있는 팀원분의 현업 관련 질문에 대한 대답. 이상적인 팀플) 1. 아이디어 구상 => 2. 기능 명세 작성 => 3. 기술(기타) 명세 작성 => 4. github 이슈 작성 => 의 절차인 것 같다.
    • style 테이블 스키마에 "계절"이라는 칼럼 추가.
    • 데이터 시각화에서, 브랜드 종류수에 대한 모호함이 있으니 가능한 그래프만 구현, 다른 그래프는 보류.



3. 몰랐던 내용

  • github 관련)
    1. desktop에서 git push를 시도하는데 permission 및 403 error가 발생하였다.

      • 문제 해결을 위해, user 설정, 토큰 설정, 윈도우 자격 증명 관리 등을 수정해 보았지만 해결이 되지 않았다.
      • 데스크탑이 아닌 랩탑에서 진행을 하니 push가 되었다.
      • 구체적인 원인은 잘 모르겠으나, 이전에 데스크탑에서 github의 token 생성 작업을 했던 적이 있는데 이것때문인 것 같다.
    2. 특정 branch에서 develop을 가리키게 만들어야 하는데 main을 가리키게 하였다.

      • 팀원분께서 친절하게 알려주셨다.
      • github에서 pull_request => New pull request 클릭한 후, develop <- branch이름 이 되도록 변경한 후, 확인 버튼을 누른다. 이후, 해당 작업을 pull한다.
    3. develop 브랜치에 존재하는 파일들이 특정 브랜치에 존재하지 않는 경우에 push해도 괜찮다는 것을 알았다. 어차피 나중에 merge하기 때문에 굳이 특정 브랜치에 같은 파일이 모두 있을 필요가 없다.

profile
천천히, 그리고 꾸준히.

0개의 댓글