Python爬虫類の爬虫類--ダウンロード速度を制限する


サーバのオーバーロードを回避するために、2回のダウンロード間に遅延を追加し、爬虫類のダウンロード速度を低下させることができます.
class Throttle:
    def __init__(self, delay):
        self.delay = delay
        self.domains = {}
    def wait(self, url):
        domain = urlparse.urlparse(url).netloc
        last_accessed = self.domains.get(domain)#get   domain      None
        if self.delay > 0 and last_accessed is not None:
            sleep_secs = self.delay - (datetime.datetime.now() - last_accessed).seconds
            id sleep_secs > 0:
                time.sleep(sleep_secs)
        self.domains[domain] = datetime.datetime.now()

Throttleは各ドメイン名の最後のアクセス時間を記録し、現在のアクセス時間が最後のアクセス時間から5秒未満の場合、プログラムはスリープに入ります.
throttle = Throttle(delay)
throttle.wait(url)
result = download(url, headers, proxy=proxy)