Limitazione della frequenza e crawling rispettoso
Impari a limitare la frequenza delle richieste, rispettare crawl-delay ed evitare di sovraccaricare i server, mantenendo lo scraping etico e sostenibile.
Limitazione della frequenza e crawling rispettoso è una lezione Web Scraping & Bots gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Web Scraping & Bots, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Web Scraping & Bots include 4 lezioni in totale.
Parti di questa lezione non sono ancora state tradotte e vengono mostrate in inglese.
Why Rate Limiting Matters
Even when scraping is legally permitted, hammering a server with rapid requests can degrade the site for real users and get your IP banned.
Respectful crawling means pacing your requests so you gather data without harming the host.
The Cost of a Request
Every request consumes server CPU, bandwidth, and database load. A scraper firing hundreds of requests per second behaves like a denial-of-service attack, even unintentionally.
- Small sites have limited capacity.
- Bursts spike server load.
- Steady, slow traffic is far kinder.
Reading Crawl-Delay
Many robots.txt files include a Crawl-delay directive specifying seconds to wait between requests. Honor it as a baseline minimum.
User-agent: *
Crawl-delay: 10
Disallow: /private/A Simple Delay
The most basic throttle adds a pause between requests. A fixed delay is fine for low-volume jobs.
import time
import requests
for url in urls:
requests.get(url)
time.sleep(2) # at least 2 seconds between requestsRandomized Delays
Fixed intervals create a robotic, easily-detected pattern. Adding jitter makes traffic look more human and spreads load.
import random, time
delay = random.uniform(1.5, 4.0)
time.sleep(delay)Token Bucket Throttling
For steadier control, a token bucket permits a fixed average rate while allowing small bursts. Tokens refill over time; each request spends one.
import time
class RateLimiter:
def __init__(self, rate):
self.rate = rate
self.last = time.time()
def wait(self):
now = time.time()
gap = 1.0 / self.rate
sleep = gap - (now - self.last)
if sleep > 0:
time.sleep(sleep)
self.last = time.time()Respecting HTTP 429
A 429 Too Many Requests response is the server telling you to slow down. Check for a Retry-After header and back off for that duration.
resp = requests.get(url)
if resp.status_code == 429:
wait = int(resp.headers.get('Retry-After', 30))
time.sleep(wait)Exponential Backoff
On repeated errors, increase the wait exponentially rather than retrying immediately. This relieves a struggling server and improves your success rate.
delay = 1
for attempt in range(5):
resp = requests.get(url)
if resp.ok:
break
time.sleep(delay)
delay *= 2 # 1, 2, 4, 8, 16 secondsConcurrency Limits
Parallel requests speed things up but multiply server load. Cap simultaneous connections with a semaphore so you never exceed a polite ceiling.
import threading
sem = threading.Semaphore(4) # max 4 in flight
def fetch(url):
with sem:
requests.get(url)Scheduling Off-Peak
Run heavy jobs during the site's low-traffic hours (often overnight in the host's timezone). Combined with throttling, this minimizes your footprint and reduces the chance of disruption.
Caching to Avoid Re-Fetching
The kindest request is the one you never send. Cache responses locally so re-running a job does not re-hit pages you already have. Only fetch what is new or stale.
import os
if not os.path.exists(cache_path):
resp = requests.get(url)
open(cache_path, 'w').write(resp.text)
html = open(cache_path).read()Quick Check
Test your understanding of respectful crawling.
Recap
You learned to crawl respectfully: honor Crawl-delay, add randomized delays, use token buckets, react to 429 with backoff, cap concurrency, and schedule off-peak.
Polite pacing keeps your scraper sustainable and your access intact.
Impara Python con un tutor IA — gratis
Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.
- Corsi
- 12
- Lezioni
- 48
Domande Frequenti
La lezione «Limitazione della frequenza e crawling rispettoso» è gratuita?
Sì — il testo completo di «Limitazione della frequenza e crawling rispettoso» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Web Scraping & Bots, passa a CoddyKit PRO. Il corso Web Scraping & Bots include 4 lezioni in totale.
Cosa imparerò in «Limitazione della frequenza e crawling rispettoso»?
Impari a limitare la frequenza delle richieste, rispettare crawl-delay ed evitare di sovraccaricare i server, mantenendo lo scraping etico e sostenibile. Eserciti Web Scraping & Bots con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Web Scraping & Bots?
Non è richiesta alcuna esperienza precedente. Web Scraping & Bots su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.
Quanto tempo richiede la lezione «Limitazione della frequenza e crawling rispettoso»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Web Scraping & Bots?
Sì. Ogni lezione Web Scraping & Bots include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Comprendere robots.txt
- Termini di servizio e copyright
- Pratiche etiche di scraping
- Limitazione della frequenza e crawling rispettoso