Files
bizmax_downloader/README-bizmax.md
2026-04-13 11:25:40 +09:00

4.5 KiB

Bizmax Excel Downloader

이 디렉터리에는 hyun.bizmax.net, hyun2.bizmax.net 고객목록 엑셀을 기간별로 다운로드하는 스크립트가 들어 있습니다.

파일

  • bizmax-download-excel.ts: 실제 다운로드 로직
  • convert-xlsx-to-csv.ts: 다운로드된 .xlsx 전체를 하나의 .csv로 합침
  • compare-csv-phone.ts: a.csv, b.csv를 전화번호 기준으로 비교
  • run-bizmax.sh: hyun, hyun2, all 선택 실행
  • run-hyun.sh: hyun.bizmax.net 전용 실행
  • run-hyun2.sh: hyun2.bizmax.net 전용 실행
  • run-convert-csv.sh: 다운로드된 .xlsx 전체를 하나의 .csv로 합침
  • run-compare-csv.sh: a.csv, b.csv를 전화번호 기준으로 비교
  • .env.example: 환경변수 예시

1. 환경 설정

.env.example를 복사해서 .env 파일을 만듭니다.

cp .env.example .env

.env 예시:

BIZMAX_ID=JH1204
BIZMAX_PASSWORD=12345
BIZMAX_RANGE_START=2016-01-01
BIZMAX_BATCH_MONTHS=3
BIZMAX_BASE_URLS=https://hyun.bizmax.net,https://hyun2.bizmax.net
BIZMAX_OUTPUT_DIR=/home/pure13700/project/download/output

2. 의존성 설치

최초 1회:

npm install

현재 package.json에는 axios, cheerio, xlsx가 들어 있습니다.

3. 실행 방법

두 사이트 모두 실행:

./run-bizmax.sh all

hyun.bizmax.net만 실행:

./run-bizmax.sh hyun

또는:

./run-hyun.sh

hyun2.bizmax.net만 실행:

./run-bizmax.sh hyun2

또는:

./run-hyun2.sh

직접 TypeScript 파일 실행:

node --experimental-strip-types ./bizmax-download-excel.ts

이 경우 .env는 자동 로드되지 않으므로, 셸에서 환경변수를 먼저 export 하거나 run-*.sh 사용을 권장합니다.

4. 동작 방식

  • 로그인
  • 고객목록 진입
  • 2016-01-01부터 현재 날짜까지 3개월 단위로 조회
  • 각 기간별 조회 결과가 0건이면 건너뜀
  • 1건 이상이면 첫 번째 엑셀 다운로드
  • 파일명에 사이트명과 기간을 붙여 저장

예시 출력:

[hyun_bizmax_net] SKIP 2016-01-01~2016-03-31 (0건)
/home/pure13700/project/download/output/hyun_bizmax_net_현대생활건강_프로그램_고객목록_2016-04-01_2016-06-30.xlsx

5. 저장 위치

기본 저장 위치:

/home/pure13700/project/download/output

변경하려면 .envBIZMAX_OUTPUT_DIR 값을 수정합니다.

CSV 저장 위치 기본값:

/home/pure13700/project/download/output/csv

변경하려면 환경변수 BIZMAX_CSV_DIR를 사용합니다.

6. XLSX -> CSV 변환

다운로드된 전체 .xlsx를 하나의 .csv로 합치기:

./run-convert-csv.sh

또는:

node --experimental-strip-types ./convert-xlsx-to-csv.ts

다른 CSV 출력 폴더를 쓰려면:

BIZMAX_CSV_DIR=/home/pure13700/project/download/output/csv node --experimental-strip-types ./convert-xlsx-to-csv.ts

기본 출력 파일:

/home/pure13700/project/download/output/csv/bizmax-all.csv

파일명을 바꾸려면:

BIZMAX_CSV_NAME=my-all.csv node --experimental-strip-types ./convert-xlsx-to-csv.ts

동작 방식:

  • output/ 아래의 .xlsx 파일들을 찾음
  • 각 워크시트를 읽음
  • 모든 데이터를 하나의 CSV로 합침
  • 앞에 source_file, source_sheet 컬럼을 추가함

참고:

  • .xlsx 파싱은 xlsx 패키지로 처리합니다.
  • 모든 파일의 헤더 구조가 동일하다는 전제를 두는 편이 안전합니다.

7. 주의 사항

  • 계정이 SMS 추가 인증을 요구하면 axios만으로는 완료되지 않습니다.
  • 사이트 구조가 바뀌면 hidden input 이름이나 다운로드 파라미터도 같이 바뀔 수 있습니다.
  • 장기간 전체 다운로드라 실행 시간이 꽤 걸릴 수 있습니다.

8. CSV 전화번호 비교

기본 실행:

COMPARE_FILE_A=./a.csv COMPARE_FILE_B=./b.csv ./run-compare-csv.sh

또는:

COMPARE_FILE_A=./a.csv COMPARE_FILE_B=./b.csv node --experimental-strip-types ./compare-csv-phone.ts

기본값:

  • COMPARE_MODE=intersection: a.csvb.csv에 모두 있는 전화번호만 출력
  • COMPARE_PHONE_COL_A=phone
  • COMPARE_PHONE_COL_B=phone

a.csv에만 있는 전화번호만 뽑으려면:

COMPARE_FILE_A=./a.csv COMPARE_FILE_B=./b.csv COMPARE_MODE=only_a node --experimental-strip-types ./compare-csv-phone.ts

출력 파일 기본값:

./compare-intersection.csv