2017-10-24 15 views
0

나는 거대한 브랜드를 긁어 내 사이트의 판매 데이터를 가져 오기 위해 치료를 사용하고 있습니다. 현재 내가 CSS/XPath는 규칙을 지정하는 항목 로더를 사용하고 있습니다 및 파이프 라인 CSV로 데이터를 쓸매일 밤 스큐를 사용하여 수만 건의 유골을 긁는 방법

DOWNLOAD_DELAY = 1.5 

CONCURRENT_REQUESTS_PER_DOMAIN = 16 

CONCURRENT_REQUESTS_PER_IP = 16 

을 사용하고 있습니다. 수집 한 데이터는 원래 가격, 판매 가격, 색상, 크기, 이름, 이미지 URL 및 브랜드입니다.

약 10k 개의 URL이있는 한 판매자 만 거미를 작성했으며 약 4 시간이 걸립니다.

제 질문은 4 시간이 10k URL에 문제가 없거나 그보다 빠를 것입니다. 그렇다면 속도를 높이려면 무엇을해야합니까?

로컬로 테스트 할 SPLASH 인스턴스를 하나만 사용하고 있습니다. 하지만 프로덕션에서는 3 개의 SPLASH 인스턴스를 사용할 계획입니다.

이제 주요 문제는 약 125 명의 상인과 각각 10k 제품을 가지고 있습니다. 그들 중 몇 명이 긁어 모으는 150,000 개 이상의 URL을 가지고 있습니다.

나는 매일 내 사이트를 업데이트하기 위해 모든 데이터를 긁어 내야합니다. 내 거미가 10k URL을 긁어 내는데 4 시간이 걸리기 때문에 매일 밤 125x10k URL을 달성하는 것이 유효한 것인지 궁금합니다

내 문제에 대한 귀하의 경험을 진심으로 감사드립니다.

+0

특정 프로그래밍 문제가 아니기 때문에이 질문을 주제와 관련이 없도록 닫으려고합니다. 이는 시스템 아키텍처 수준에서의 성능과 관련이 있습니다. –

+0

CONCURRENT_REQUESTS_PER_DOMAIN은 CONCURRENT_REQUESTS_PER_IP이 0이 아닌 경우 적용되지 않으므로 삭제할 수 있습니다. – chasmani

+0

@KlausD를 존중하며 scapy 대신 https://github.com/buckyroberts/Spider – babygame0ver

답변

4

DOWNLOAD_DELAY는 IP마다 적용되므로 IP가 1 개인 경우 10,000 요청에는 15000 초 (10,000 * 1.5)가 걸립니다. 그것은 단지 4 시간 이상입니다. 그래서 네 말이 맞다.

하나 이상의 사이트를 긁어 모으는 경우 다른 IP 주소가되므로 더 많이 또는 적게 병렬로 실행해야하므로 4 시간 정도 걸립니다.

125 개 사이트를 긁어 모으고 있다면 어떤 시점에서 다른 병목 현상이 발생할 수 있습니다.