EXITO Supply Collector — 모르는 사이트도 일단 읽는 수집기
PythonPlaywrightCustomTkinterPyInstaller
쇼핑몰 운영자는 공급사 사이트에서 상품 정보를 옮겨 담는 데 하루의 상당 부분을 씁니다. 공급사는 계속 늘어나고, 사이트 구조는 제각각입니다.
공급사마다 크롤러를 새로 만들면 공급사가 늘어날 때마다 개발자가 필요합니다. 그 구조로는 운영자가 스스로 못 씁니다.
등록된 크롤러가 없으면 GenericCrawler가 구조화 데이터(JSON-LD), OpenGraph, meta 태그, DOM을 순서대로 분석합니다. 완벽하진 않지만 '이 사이트는 지원 안 됩니다'로 끝나지 않습니다.
`BaseCrawler`를 상속해 `can_handle`과 `collect`만 구현하고 `CrawlerRegistry`에 등록하면 됩니다. 사이트별 선택자와 인증 정보는 코드가 아니라 설정에 둡니다.
CLI로 끝내지 않고 CustomTkinter로 MVC 구조의 화면을 붙이고 PyInstaller로 실행 파일까지 만들었습니다. 파이썬을 모르는 운영자가 받아서 바로 쓸 수 있는 형태여야 실제로 쓰입니다.
수집한 HTML 안의 이미지 링크를 다운로드된 로컬 상대경로로 치환합니다. 원본 사이트가 바뀌거나 핫링크가 막혀도 산출물이 깨지지 않습니다.
GenericCrawler는 구조화 데이터가 부실한 사이트에서 정확도가 떨어집니다. 그런 사이트는 결국 전용 플러그인을 써야 하고, 그래서 플러그인 구조를 먼저 만들었습니다.
지금 막힌 지점을 그대로 적어 보내주세요. 제가 할 수 있는 일과 없는 일을 먼저 구분해 답장드립니다.