Amazon Browse 노드를 찾는 빠른 트릭

Amazon은 카탈로그의 각 개별 제품을 일반적으로 “노드”라고 하는 숫자 범주로 분류합니다. 이러한 노드는 “부모 노드”와 “리프 노드”를 반영하여 의미 있고 계층적인 방식으로 배열됩니다. 리프 노드는 상위 노드의 보다 정확하고 구체적인 하위 범주입니다. 즉, 상위 노드는 제품의 가장 일반적인 분류를 나타내며 각 리프 또는 “자식”은 특정 관련 세분화를 반영합니다. 예를 들어 노드 283155는 “books”의 상위 노드이고 노드 5는 특정 유형의 책인 “computer & technology books”입니다. 이 예에서는 283155 부모와 5 아이 또는 잎. 현재 Amazon에는 100,000개 이상의 노드가 있습니다. 그러나 대부분 API를 통해 액세스할 수 없거나 실용적인 정보가 포함되어 있습니다.

Amazon의 모든 노드를 검색하는 프로세스는 반복적인 API 요청으로 처리됩니다. 대부분의 동료의 경우 각 개별 요청 사이에 최소 1초가 있어야 합니다. Amazon은 모든 부모를 포함하는 마스터 루트 시작점을 제공하지 않기 때문에 모든 노드를 찾는 프로세스는 시간이 많이 걸립니다.

Amazon API에는 모든 상위 항목이 포함된 마스터 루트 목록이 없으므로 BrowseNodes 데이터베이스를 생성하는 첫 번째 단계는 다양한 범주 및 관련 노드 목록을 가져오는 것입니다. 한 곳에서 찾을 수 있는 가장 다양한 범주 목록은 “Amazon Site Directory” 페이지에 있습니다. 당연히 이 페이지에는 검색 엔진이 더 깊은 제품 카테고리를 찾는 데 도움이 되는 링크가 포함되어 있으며 Amazon이 제공하는 모든 것을 참조할 수 있습니다. 이 페이지에 있는 대부분의 링크에는 PHP를 사용하여 찾은 노드별 URL 주소가 포함되어 있습니다. HTML 및 링크에서 불필요한 HTML 및 중복 참조를 제거한 후 요약 목록은 샘플의 SampleNode_US 테이블에 mySQL 데이터베이스에 저장됩니다. 행당 하나의 노드.

이때 SampleNode_US 테이블의 각 행은 API를 통해 다시 한 번 실행됩니다. 그러나 이번에는 각 행의 조상을 식별하는 것이 목적입니다. 제공된 API 데이터에서 중복된 상위 항목이 제거되고 결과가 자체 데이터베이스 테이블인 RootNode_US에 추가됩니다. 이 방법에서는 BrowseNode API에서 제공되는 데이터를 구성하여 모든 부모를 포함하는 루트를 찾습니다.

마지막으로 RootNode_US 테이블의 각 행은 API를 통해 전달되어 자식 노드 ID를 찾습니다. 각 하위 브라우저 노드는 가장 깊은 하위 항목을 찾기 위해 API로 전송됩니다. 더 이상 자식이 발견되지 않으면 다음 부모 노드 또는 자식이 로드되어 실행됩니다. 모든 자식에 대해 각 노드가 탐색될 때까지 프로세스가 반복됩니다. 결과는 Node_US 테이블에 저장 및/또는 업데이트됩니다. API 요청 사이에 필요한 시간 지연을 고려한 후 스크립트가 모든 노드를 구문 분석하는 데 약 2-3주가 소요됩니다.