Python爬虫類の爬虫類--ダウンロード速度を制限する
1509 ワード
サーバのオーバーロードを回避するために、2回のダウンロード間に遅延を追加し、爬虫類のダウンロード速度を低下させることができます.
Throttleは各ドメイン名の最後のアクセス時間を記録し、現在のアクセス時間が最後のアクセス時間から5秒未満の場合、プログラムはスリープに入ります.
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)