![다나와 가격 크롤러 만들기 - 크롤링 로직 정리](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCztoS%2FbtsGZwcE7IO%2FazXhZHcTk3UQJmK9Qp1mp0%2Fimg.png)
크롤링 로직
1. 크롤링할 페이지를 사용자로부터 미리 받아둡니다.
데이터는 카테고리, url, 페이지 수 를 입력 받을 수 있습니다.
csv 파일의 형태로 저장되어있습니다.
이런 형태로 말이죠
사용자가 크롤링 원하는 페이지를 쉽게 추가하기 위해서는 db에 위 내용을 저장하는것 보다는 csv의 형태로 존재하는것이 좋다고 생각했습니다.
2. 크롤링 대상 페이지에서 제조사 : 삼성전자로 선택
카테고리 페이지에서 삼성전자 선택이 어떤식으로 가능한지 확인이 필요했습니다.
확인 해 보니 일부 카테고리를 제외하면 대부분 메이저 제조회사라서 업체명 및 체크박스가 고정입니다.
그래서 페이지 진입하면 항상 해당 체크박스를 체크하도록 처리해두었습니다.
3. 페이지 수 만큼 데이터를 크롤링 해서 저장합니다.
아래 처리들이 필요합니다.
1. 10페이지마다 오른쪽 화살표 버튼을 눌러줘야합니다.
-> 특정 고정 위치의 버튼을 클릭하는 방식으로 처리했습니다.
2. 데이터 중 광고 제품을 제거해야합니다.
-> 광고의 경우 특정한 ad와 같은 prefix가 붙은 class 안에 존재하기에 그 부분을 제외하는 식으로 처리했습니다.
3. 일부 데이터가 감춰진 부분이 있어 빈 정보가 크롤링 되어 오류를 발생시키는 케이스가 있습니다.
-> display:none으로 처리되어있었는데, 그 부분을 강제로 display하도록 selenium으로 처리했습니다.
코드는 아래와 같이 작성되었습니다.
데이터 베이스에 저장 될 데이터 포맷
이름 (, 모델 ?), 가격, 날짜, 옵션? (포함, 미포함)
저장 데이터의 형태가 사내 몰에서 크롤링한 데이터와 일치해야합니다.
카테고리가 일부 다르게 처리되는 경우는 사내몰 크롤링 정보에 맞추도록 할 예정입니다.
일단 크롤링 방법론 자체는 크게 어렵지 않은데 가장 큰 문제는 모델명을 처리하는 방법입니다.
가장 큰 이슈사항 : 모델명을 처리하는 방법
다나와 제품명으로 부터 파싱
- 제품명의 케이스들을 확인해봤을때 아래와 같은 케이스들이 있었습니다.
삼성전자 갤럭시북2 프로 S.E NT950XFT-A51A WIN11
삼성전자 갤럭시북2 NT550XEZ-A38A WIN10 16GB램
삼성전자 갤럭시북 10.6 코어M3 7세대 LTE 128GB
삼성전자 C32R502
삼성전자 SMART M5 S27CM501 + 스마트마운트 이동식 스탠드
삼성전자 갤럭시탭S9 5G 128GB, 마이크로소프트 365 패키지
삼성전자 비스포크 RWP54421BF7M
삼성전자 QLED KQ85QC70AFXKR
삼성전자 윈도우핏 AW05B5171WWAT 거치형
삼성전자 갤럭시 버즈 라이브 충전 케이스
삼성전자 데스크탑 Tower DM500TGB-AC71B
삼성전자 비스포크 DW30A3030CE 6인용 카운터탑
삼성전자 비스포크 김치플러스 키친핏 새틴 RQ42C94J3 (2023년형) (화이트)
삼성전자 비스포크 키친핏 코타 RZ34A7965AP (색상선택형)
삼성전자 갤럭시북 프로360 NT950QDB-KC72S
삼성전자 비스포크 키친핏 DW60BB800UAP 글램 + NZ63B6502XHE
삼성전자 비스포크 키친핏 DW60BB837WLBS 14인용 빌트인
아주 파싱하기 고통스럽게 다양합니다..
1. 제품명에 반드시 모델명이 특정 위치에 있을것이라 예상했으나, 포맷도 형태도 아주 다양합니다.
이 부분이 가장 해결하기 힘든 부분인데요.
아직은 마땅히 좋은 방법은 떠오르지는 않습니다.
OpenAI의 API를 써서 LLM에 맡겨볼까도 생각중인데 비용적인 문제도 있고, 큰 의미가 있을지는 잘 모르겠네요.
그래서 그냥 카테고리 별로 나오는 형태를 각각 지원해주기로 했습니다.
생각보다 하나식 떼놓고 보니 처리하기가 어렵지는 않아서 각 카테고리별로 파싱 코드를 추가했습니다.
2. 모델명이 출력되지 않는 경우도 있습니다. (태블릿, 워치, 스마트폰)
이 경우에는 따로 제품 이름과 모델명을 매칭하는 크롤링이 추가로 필요할것으로 생각됩니다.
페이지에서 모델명이 보이지 않는 케이스 (휴대폰, 태블릿) 이 있어서 해당 페이지들은 DB에서 제거하고 추후 추가하는쪽으로 우선은 처리 예정입니다.
DB에 넣어 둘 데이터는
갤럭시 시리즈 모델넘버, 출시일 목록 총 정리 (tistory.com)
갤럭시 시리즈 모델넘버, 출시일 목록 총 정리
갤럭시 시리즈의 역대 출시일과 모델번호, 모델명을 모았습니다. 개인적으로 참고하기 위한 자료로 위키와 여러 뉴스들을 참고하여 한번 더 정리하였습니다. 앞으로도 여러 뉴스들을 더 참고하
nhj12311.tistory.com
smartPhoneList.xlsx (live.com)
https://view.officeapps.live.com/op/view.aspx?src=https%3A%2F%2Fwww.socialservice.or.kr%3A444%2Fupload%2Fnotice%2FsmartPhoneList.xlsx&wdOrigin=BROWSELINK
인터넷 홈에서 파일을 검색하는 동안 잠시 기다려 주세요.
view.officeapps.live.com
이 두군데서 조합을 해서 넣었습니다 ㅎㅎㅎ 노가다... ㅠㅠ 어쩔수 없는것 같기도하네요.
자동으로도 할수있는데 그 작업 자체가 많을것 같아서 (그거까지 하고 싶지 않은게 큽니다.) 이쪽은 수동으로하는걸로 선택했습니다.
그리고 나무위키를 통해서 추가했습니다..
아무튼 잘 작동되는지 확인하고 회사가서 테이블을 합쳐보면 재미있는 가격 그래프가 추가 될 수 있을것 같습니다.
ray5273/DanawaCrawlerSpring: DanawaCrawler based on SpringFramework and JAVA (github.com)
GitHub - ray5273/DanawaCrawlerSpring: DanawaCrawler based on SpringFramework and JAVA
DanawaCrawler based on SpringFramework and JAVA. Contribute to ray5273/DanawaCrawlerSpring development by creating an account on GitHub.
github.com
'프로젝트 > 다나와 가격 크롤러 만들기' 카테고리의 다른 글
크롬 구 버전 설치 및 크롬 드라이버 설치 (0) | 2024.04.21 |
---|---|
다나와 가격 크롤러 만들기 - 제약사항 및 요구사항 정리 (0) | 2024.04.20 |
개발 및 IT 관련 포스팅을 작성 하는 블로그입니다.
IT 기술 및 개인 개발에 대한 내용을 작성하는 블로그입니다. 많은 분들과 소통하며 의견을 나누고 싶습니다.