Come estrarre i Best Seller di Amazon con Python: 4 metodi a confronto

Ultimo aggiornamento il August 21, 2026
Come estrarre i Best Seller di Amazon con Python: 4 metodi a confronto

Lo scorso weekend ho bruciato un intero barattolo di caffè cercando di estrarre i dati dalla pagina Best Sellers di Amazon in quattro modi diversi. Due hanno funzionato alla grande, uno mi ha quasi fatto bloccare l’IP e uno, letteralmente, ha richiesto un solo clic. Ecco tutto quello che ho imparato.

Amazon è un colosso del commercio online: 600 milioni di schede prodotto, oltre 310 milioni di account cliente attivi e un sistema Best Sellers Rank (BSR) che si aggiorna ogni ora. Se fai ricerche di prodotto per FBA, analisi dei prezzi della concorrenza o vuoi intercettare i trend prima dei competitor, i dati dei Best Seller valgono oro.

Ma tirare fuori quei dati da Amazon e portarli in un foglio di calcolo? È lì che la faccenda si complica. Ho provato requests + BeautifulSoup, Selenium, una scraping API e Thunderbit (il nostro AI web scraper no-code) per capire quale approccio funzioni davvero — e quali, invece, ti lascino davanti a una pagina CAPTCHA.

Cosa sono i Best Sellers di Amazon (e perché dovrebbero interessarti)?

Amazon Best Sellers Rank (BSR) è la classifica in tempo reale di Amazon che ordina i prodotti in base al volume di vendite all’interno di ogni categoria. Pensalo come una gara di popolarità aggiornata ogni ora, basata sia sui dati di vendita recenti sia su quelli storici. Amazon lo descrive così:

"Il calcolo Amazon Best Sellers si basa sulle vendite Amazon ed è aggiornato ogni ora per riflettere le vendite recenti e storiche di ogni articolo venduto su Amazon." — Amazon Seller Central

La pagina Best Sellers mostra i primi 100 prodotti per categoria, divisi in due pagine da 50 elementi ciascuna. La pagina 1 copre le posizioni #1–50, la pagina 2 le posizioni #51–100. Amazon ha confermato che visualizzazioni e recensioni non influenzano il BSR — conta solo il dato di vendita.

Chi utilizza questi dati? Venditori e-commerce alla ricerca di prodotti per FBA, team sales che costruiscono intelligence competitiva, team operations che monitorano l’andamento dei prezzi e market researcher che seguono la crescita delle categorie. Per esperienza, chi vende su Amazon o compete con Amazon finisce prima o poi per aver bisogno di questi dati in un foglio di calcolo.

Perché estrarre i Best Sellers di Amazon con Python?

La ricerca manuale dei prodotti è una perdita di tempo. Uno studio McKinsey ha rilevato che i dipendenti passano 9,3 ore a settimana solo a cercare e raccogliere informazioni. Per i team e-commerce significa ore passate a cliccare pagine Amazon, copiare nomi e prezzi e incollarli nei fogli di calcolo — per poi rifare tutto la settimana successiva.

Ecco uno sguardo rapido ai casi d’uso che rendono utile l’estrazione dei Best Sellers:

Caso d'usoCosa ottieniChi ne beneficia
Ricerca prodotti FBAIndividua prodotti ad alta domanda e bassa concorrenza grazie al BSR e al numero di recensioniVenditori Amazon, dropshipper
Analisi prezzi competitiviMonitora le variazioni di prezzo dei prodotti principali della tua categoriaTeam e-commerce, analisti pricing
Monitoraggio dei trend di mercatoIndividua categorie in crescita e cambi stagionaliProduct manager, market researcher
Lead generationCrea liste di brand best seller e delle loro linee prodottoTeam sales, outreach B2B
Analisi competitorConfronta i tuoi prodotti con i leader di categoriaBrand manager, team strategy

Il ritorno sull’investimento è concreto: un sondaggio Salesforce su 2.700 professionisti del commercio ha rilevato che gli strumenti AI fanno risparmiare in media 6,4 ore a settimana ai professionisti e-commerce. Inoltre, i venditori che usano il monitoraggio automatico dei prezzi conquistano la Buy Box il 67% delle volte contro il 42% di chi lo fa manualmente — un aumento delle vendite del 37% grazie a reazioni più rapide alle variazioni di prezzo.

4 modi per estrarre i Best Sellers di Amazon con Python: confronto rapido

Prima di entrare nei tutorial passo per passo, ecco il confronto affiancato che avrei voluto avere prima di iniziare i test. Questa tabella ti aiuta a scegliere il metodo giusto in base al tuo caso:

Criteriorequests + BS4SeleniumScraping API (es. Scrape.do)Thunderbit (No-Code)
Difficoltà di configurazioneMediaAlta (driver, browser)Bassa (API key)Molto bassa (estensione Chrome)
Gestione del lazy loadingNoSì (simulazione scroll)Sì (HTML renderizzato)Sì (l'AI gestisce il rendering)
Resistenza anti-botBassa (ban IP)Media (rilevabile)Alta (proxy rotanti)Alta (cloud + browser mode)
ManutenzioneAlta (i selettori si rompono)Alta (aggiornamenti driver + selettori)BassaMolto bassa (l'AI si adatta ai cambiamenti di layout)
CostoGratisGratisA pagamento (per richiesta)Piano free + piani a pagamento
Ideale perEstrazioni una tantum, apprendimentoPagine ricche di JS, accesso con loginScalabilità / produzioneNon sviluppatori, ricerche rapide, monitoraggio ricorrente

Se vuoi imparare le basi dello scraping in Python, parti dal Metodo 1 o 2. Se ti serve affidabilità in produzione e su larga scala, scegli il Metodo 3. Se vuoi ottenere risultati con un solo clic senza scrivere codice, vai direttamente al Metodo 4.

Prima di iniziare

  • Difficoltà: Da principiante a intermedio (a seconda del metodo)
  • Tempo richiesto: Circa 15 minuti per Thunderbit, circa 45 minuti per i metodi Python
  • Cosa ti serve: Python 3.8+ (per i Metodi 1–3), browser Chrome, estensione Thunderbit per Chrome (per il Metodo 4) e l’URL di una categoria Best Sellers di Amazon

Metodo 1: estrarre i Best Sellers di Amazon con requests + BeautifulSoup

Questo è l’approccio leggero e adatto ai principianti: niente automazione del browser, solo richieste HTTP e parsing dell’HTML. Ed è anche quello che mi ha insegnato di più sulle difese anti-scraping di Amazon.

Passo 1: prepara l’ambiente

Installa i pacchetti necessari:

pip install requests beautifulsoup4 pandas

Poi importa le librerie:

import requests
from bs4 import BeautifulSoup
import pandas as pd
import random
import time

Passo 2: invia una richiesta con header realistici

Amazon blocca le richieste che sembrano provenire da bot. La difesa più semplice è impostare un header User-Agent che imiti un browser reale. Ecco uno snippet con un pool di User-Agent aggiornati e credibili (fonte Geekflare, marzo 2026):

USER_AGENTS = [
    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36",
    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36",
    "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:149.0) Gecko/20100101 Firefox/149.0",
    "Mozilla/5.0 (Macintosh; Intel Mac OS X 15.7; rv:149.0) Gecko/20100101 Firefox/149.0",
    "Mozilla/5.0 (Macintosh; Intel Mac OS X 15_7_5) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.0 Safari/605.1.15",
]

headers = {"User-Agent": random.choice(USER_AGENTS)}
url = "https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/"
response = requests.get(url, headers=headers)
print(response.status_code)  # Dovrebbe essere 200

Se vedi uno status code 200, è andata. Se compare 503 o vieni reindirizzato a una pagina CAPTCHA, Amazon ha segnalato la tua richiesta.

Passo 3: analizza i dati dei prodotti con BeautifulSoup

Ispeziona l’HTML della pagina Amazon con gli strumenti per sviluppatori del browser (clic destro → Ispeziona). I contenitori dei prodotti usano l’ID gridItemRoot. Dentro ogni contenitore trovi nome prodotto, prezzo, valutazione e URL.

soup = BeautifulSoup(response.text, "html.parser")
products = []

for item in soup.find_all("div", id="gridItemRoot"):
    title_tag = item.find("div", class_="_cDEzb_p13n-sc-css-line-clamp-3_g3dy1")
    price_tag = item.find("span", class_="_cDEzb_p13n-sc-price_3mJ9Z")
    link_tag = item.find("a", class_="a-link-normal")
    
    title = title_tag.get_text(strip=True) if title_tag else "N/A"
    price = price_tag.get_text(strip=True) if price_tag else "N/A"
    url = "https://www.amazon.com" + link_tag["href"] if link_tag else "N/A"
    
    products.append({"Title": title, "Price": price, "URL": url})

Attenzione: i nomi delle classi con prefisso _cDEzb_ sono hash generati dai CSS module che Amazon rigenera periodicamente. L’ID gridItemRoot e la classe a-link-normal sono più stabili, ma verifica sempre i selettori con DevTools prima di lanciare lo scraper.

Passo 4: esporta in CSV

df = pd.DataFrame(products)
df.to_csv("amazon_best_sellers.csv", index=False)
print(f"Estratti {len(products)} prodotti")

Cosa aspettarsi — e cosa va storto

Nel mio test questo metodo ha restituito circa 30 prodotti invece di 50. Non è un bug del codice: è il lazy loading di Amazon. Solo circa 30 prodotti vengono renderizzati al caricamento iniziale della pagina; gli altri compaiono dopo lo scroll, cosa che richiede l’esecuzione di JavaScript che requests non può gestire.

Altri limiti:

  • I ban IP arrivano in fretta senza rotazione dei proxy (mi hanno bloccato dopo circa 15 richieste consecutive)
  • I selettori CSS si rompono quando Amazon aggiorna il layout della pagina — e lo fa spesso
  • Nessuna gestione della paginazione pronta all’uso

Per imparare lo scraping in Python, questo approccio è ottimo. Per un uso in produzione, però, è fragile.

Metodo 2: estrarre i Best Sellers di Amazon con Selenium

Selenium risolve il problema del lazy loading eseguendo un browser reale — più pesante da configurare, ma cattura tutti e 50 i prodotti per pagina.

Passo 1: installa Selenium

pip install selenium pandas

Buone notizie: da Selenium 4.6 in poi non serve più webdriver-manager. Selenium Manager gestisce automaticamente il download dei driver.

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time
import pandas as pd

options = Options()
options.add_argument("--headless=new")
options.add_argument("--window-size=1920,1080")
options.add_argument("--disable-blink-features=AutomationControlled")

driver = webdriver.Chrome(options=options)

Il flag --headless=new (introdotto in Chrome 109+) usa la stessa pipeline di rendering di Chrome con interfaccia, rendendo più difficile per Amazon rilevare l’automazione.

Passo 2: scorri oltre il lazy loading

Questo è il passaggio che rende Selenium utile nonostante il setup più complesso. I Best Sellers di Amazon caricano solo circa 30 prodotti all’inizio: il resto appare dopo lo scroll.

def scroll_page(driver, scrolls=5, delay=2):
    for _ in range(scrolls):
        driver.find_element(By.TAG_NAME, "body").send_keys(Keys.PAGE_DOWN)
        time.sleep(delay)

driver.get("https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/")
time.sleep(3)
scroll_page(driver)

Dopo lo scroll, tutti e 50 i prodotti dovrebbero essere presenti nel DOM. Nel mio caso, 5 scroll con un delay di 2 secondi sono stati sufficienti, ma potresti dover regolare i valori in base alla velocità della connessione.

Passo 3: estrai i dati dei prodotti

items = driver.find_elements(By.ID, "gridItemRoot")
products = []

for item in items:
    try:
        title = item.find_element(By.CSS_SELECTOR, "div._cDEzb_p13n-sc-css-line-clamp-3_g3dy1").text
    except:
        title = "N/A"
    try:
        price = item.find_element(By.CSS_SELECTOR, "span._cDEzb_p13n-sc-price_3mJ9Z").text
    except:
        price = "N/A"
    try:
        url = item.find_element(By.CSS_SELECTOR, "a.a-link-normal").get_attribute("href")
    except:
        url = "N/A"
    
    products.append({"Title": title, "Price": price, "URL": url})

Avvolgere ogni estrazione in un blocco try/except è importante: alcuni prodotti possono essere esauriti o avere campi mancanti, e non vuoi che un singolo elemento comprometta l’intera estrazione.

Passo 4: gestisci la paginazione

Amazon divide i 100 Best Sellers in due pagine con strutture URL diverse:

urls = [
    "https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/",
    "https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/ref=zg_bs_pg_2_electronics?_encoding=UTF8&pg=2"
]

all_products = []
for url in urls:
    driver.get(url)
    time.sleep(3)
    scroll_page(driver)
    # ... estrai i prodotti come sopra ...
    all_products.extend(products)

driver.quit()

Cosa aspettarsi

Nel mio test, Selenium ha catturato tutti e 50 i prodotti per pagina — una chiara vittoria rispetto a requests + BS4. Il rovescio della medaglia: ci sono voluti circa 45 secondi per pagina (compresi i ritardi dello scroll) e sono stato comunque segnalato dopo averlo eseguito troppe volte senza rotazione dei proxy. Selenium è inoltre rilevabile dai sistemi anti-bot di Amazon anche con i flag di anti-detection — per operazioni serie su larga scala servono ulteriori misure (vedi il playbook anti-ban più sotto).

Altri punti critici:

  • I mismatch tra versioni di WebDriver capitano ancora ogni tanto, anche se Selenium Manager li ha resi molto meno frequenti
  • I selettori CSS vanno aggiornati ogni volta che Amazon modifica il DOM
  • L’uso di memoria è elevato: ogni istanza del browser consuma circa 200–400MB di RAM

Metodo 3: estrarre i Best Sellers di Amazon con una Scraping API

Le scraping API sono l’approccio “lascia fare a qualcun altro il lavoro pesante”. Servizi come Scrape.do, Oxylabs e ScrapingBee gestiscono rotazione dei proxy, rendering JavaScript e protezioni anti-bot: tu invii un URL e ricevi HTML o JSON.

Come funziona

Invii l’URL target all’endpoint API. L’API renderizza la pagina usando un browser reale sulla propria infrastruttura, ruota i proxy, gestisce i CAPTCHA e restituisce HTML pulito. Poi analizzi l’HTML ricevuto con BeautifulSoup, come al solito.

Passo 1: invia una richiesta tramite API

Ecco un esempio con Scrape.do (i prezzi partono da 29$/mese per 150.000 crediti; 1 credito = 1 richiesta, indipendentemente dal rendering):

import requests
from bs4 import BeautifulSoup

api_token = "YOUR_API_TOKEN"
target_url = "https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/"

api_url = f"https://api.scrape.do?token={api_token}&url={target_url}&render=true&geoCode=us"
response = requests.get(api_url)
soup = BeautifulSoup(response.text, "html.parser")

Da qui in poi il parsing è identico al Metodo 1: stessi selettori, stessa logica di estrazione.

Controllo reale sui prezzi

Ecco cosa addebitano le principali API per 1.000 richieste Amazon, al miglior prezzo disponibile:

ProviderCosto per 1.000 richiesteNote
Scrape.do~0,19$Tariffa fissa, nessun moltiplicatore di crediti
Oxylabs~1,80$Moltiplicatore x5 per il rendering JS
ScrapingBee~4,90$Moltiplicatori da x5 a x25 per le funzioni premium
Bright Data5,00$+Dati più completi (686 campi/prodotto) ma anche il più lento (~66 sec/richiesta)

Pro e contro

Pro: affidabilità elevata (~99% di successo su Amazon per i provider migliori), niente manutenzione dei driver, gestione automatica dell’anti-bot, buona scalabilità.

Contro: costo per richiesta (che cresce rapidamente su larga scala), serve comunque scrivere il codice di parsing, e resti vulnerabile ai cambiamenti dei selettori CSS. Per 100.000 pagine al mese, il confronto dei costi diventa molto evidente: sviluppare internamente costa circa $1,98M in tre anni contro $332K con un provider API — un risparmio del 71%.

Il punto di pareggio è in genere tra 500K e 1M richieste al mese. Sotto quella soglia, il risparmio di tempo offerto dalle API supera di gran lunga il costo.

Metodo 4: estrarre i Best Sellers di Amazon con Thunderbit (senza Python)

Dichiarazione trasparente: lavoro in Thunderbit, quindi prendi questa sezione con questo contesto. Detto ciò, ho davvero testato tutti e quattro i metodi uno dopo l’altro, e la differenza nel time-to-data è stata impressionante.

Thunderbit è un AI web scraper che funziona come estensione Chrome. L’idea di base: invece di scrivere selettori CSS o codice Python, l’AI legge la pagina e capisce quali dati estrarre. Per i Best Sellers di Amazon, Thunderbit ha template già pronti che funzionano con un solo clic.

Passo 1: installa l’estensione Thunderbit per Chrome

Vai al Chrome Web Store e fai clic su “Aggiungi a Chrome”. Crea un account gratuito: il piano free offre crediti sufficienti per fare una prova.

Passo 2: apri la pagina Best Sellers di Amazon

Apri in Chrome qualsiasi pagina di categoria Best Sellers di Amazon. Per esempio: https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/

Passo 3: fai clic su “One Click Extract”

Apri la sidebar di Thunderbit e fai clic su “One Click Extract”. L’AI analizza la struttura della pagina e individua le colonne: nome prodotto, prezzo, valutazione, URL immagine, venditore, URL prodotto e posizione in classifica. Nel mio test ha identificato correttamente tutti i campi rilevanti in circa 3 secondi.

amazon-thunderbit-product-data.webp

Puoi rinominare, rimuovere o aggiungere colonne. Puoi anche aggiungere prompt AI personalizzati per ogni campo — per esempio, “classifica come Electronics/Apparel/Home” per inserire un tag categoria in ogni prodotto.

Passo 4: fai clic su “Scrape”

Premi il pulsante “Scrape”. Thunderbit compila una tabella strutturata con tutti i dati dei prodotti presenti nella pagina. In modalità cloud, può elaborare fino a 50 pagine in parallelo, gestendo automaticamente lazy loading e paginazione.

Passo 5: esporta gratis

Fai clic su “Export” e scegli la destinazione: Excel, Google Sheets, Airtable o Notion. Le esportazioni sono gratuite su tutti i piani — nessun costo nascosto.

product-data-export.webp

L’intero processo mi ha richiesto circa 90 secondi, dall’apertura della pagina al foglio di calcolo completo. Per confronto, il Metodo 1 ha richiesto circa 20 minuti (incluso il debug del lazy loading), il Metodo 2 circa 35 minuti (inclusa la configurazione di Selenium) e il Metodo 3 circa 15 minuti (inclusa la creazione dell’account API).

Perché Thunderbit funziona bene con Amazon

Poiché l’AI rilegge la pagina ogni volta da zero, si adatta automaticamente ai cambiamenti di layout — niente selettori CSS da mantenere. Questo risolve direttamente la lamentela più comune nei forum sullo scraping: “un web scraper base non basta, devi aggiungere mille controlli per i cambi degli elementi”. Quando Amazon modifica il DOM (cosa che accade spesso), non devi aggiornare nulla.

La modalità di scraping cloud gestisce in modo trasparente rotazione dei proxy, rendering e protezioni anti-bot. Per chi cerca una soluzione che “funzioni e basta”, questo elimina completamente il problema dei ban.

Evita la manutenzione dei selettori Quando Amazon cambia il markup, i selettori BeautifulSoup si rompono. L'AI di Thunderbit rilegge la pagina a ogni esecuzione e reidentifica i campi. Get Started Free

Il playbook anti-ban: come evitare di essere bloccati da Amazon

Il sistema anti-bot di Amazon è aggressivo. Durante i test il mio IP è stato temporaneamente bloccato, e gli utenti dei forum riportano la stessa cosa: “errori ovunque, Amazon ha persino iniziato a reindirizzarmi alla homepage”. Se scegli la strada Python (Metodi 1–3), questa sezione è fondamentale.

Ecco una strategia a più livelli, dalla più semplice alla più avanzata:

1. Ruota gli User-Agent

Inviare ripetutamente lo stesso User-Agent è un segnale sospetto. Usa il pool di 5+ stringhe dell’esempio nel Metodo 1 e selezionane una in modo casuale per ogni richiesta:

headers = {"User-Agent": random.choice(USER_AGENTS)}

2. Aggiungi ritardi casuali tra le richieste

I ritardi fissi sono individuabili (creano pattern). Quelli casuali sono più sicuri:

time.sleep(random.uniform(2, 5))

Ho visto che intervalli casuali tra 2 e 5 secondi mi tenevano sotto il radar per piccoli batch (meno di 50 richieste). Per esecuzioni più grandi, meglio salire a 3–7 secondi.

3. Usa la rotazione dei proxy

Questo è il punto chiave. I benchmark di Proxyway mostrano che i proxy residential raggiungono in media un successo di circa il 94% su Amazon, contro il 59% dei datacenter proxy — una differenza di 35 punti percentuali. Lo stack di rilevamento di Amazon include fingerprinting TLS, analisi comportamentale e limiti per IP, quindi gli IP standard dei datacenter vengono segnalati in pochi secondi.

I proxy residential costano di più (2–12$ per GB a seconda del provider), ma sono molto più affidabili. Esempio di codice:

proxies = {
    "http": "http://user:pass@residential-proxy.example.com:8080",
    "https": "http://user:pass@residential-proxy.example.com:8080"
}
response = requests.get(url, headers=headers, proxies=proxies)

4. Rafforza il fingerprint del browser (Selenium)

options.add_argument('--disable-blink-features=AutomationControlled')
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)

# Dopo l'inizializzazione del driver, rimuovi il flag navigator.webdriver
driver.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument', {
    'source': "Object.defineProperty(navigator, 'webdriver', {get: () => undefined})"
})

5. Gestisci sessioni e cookie

Mantenere i cookie tra le richieste fa sembrare il tuo scraper una vera sessione utente:

session = requests.Session()
# Visita prima la homepage per ottenere cookie realistici
session.get("https://www.amazon.com", headers=headers)
time.sleep(2)
# Poi estrai la pagina target
response = session.get(target_url, headers=headers)

6. Quando saltare del tutto il problema

Per chi non vuole gestire nulla di tutto questo, lo scraping cloud di Thunderbit si occupa in modo trasparente di rotazione proxy, rendering e protezioni anti-bot. Anche le scraping API gestiscono gran parte di queste complessità già pronte. Per esperienza, il tempo speso a risolvere problemi anti-ban supera spesso quello richiesto per scrivere il codice di scraping vero e proprio — quindi l’approccio “funziona e basta” ha un ROI concreto.

Arricchimento delle subpage: estrarre le pagine dettaglio prodotto per dati più ricchi

La pagina listing dei Best Sellers mostra solo informazioni di base — titolo, prezzo, valutazione, rank. Ma il vero valore per la ricerca FBA è nelle singole pagine dettaglio prodotto. Ecco cosa ti perdi se estrai solo la listing:

CampoPagina listingPagina dettaglio prodotto
Nome prodotto
Prezzo
Valutazione
Rank BSR✅ (con ranking per sotto-categoria)
Brand
ASIN
Data di prima disponibilità
Dimensioni/Peso
Numero di venditori
Caratteristiche in bullet point
Proprietario della Buy Box

Il campo “Data di prima disponibilità” è particolarmente prezioso: ti dice da quanto tempo il prodotto è sul mercato, un segnale chiave per l’analisi della concorrenza. E sapere quanti venditori ci sono e chi possiede la Buy Box aiuta a valutare se valga la pena entrare in una nicchia (se Amazon detiene oltre il 30% della Buy Box, competere è estremamente difficile).

Approccio Python: iterare sugli URL dei prodotti

Dopo aver raccolto gli URL dei prodotti dalla pagina listing, cicla su ciascuno con una pausa:

for product in products:
    time.sleep(random.uniform(3, 6))
    detail_response = session.get(product["URL"], headers={"User-Agent": random.choice(USER_AGENTS)})
    detail_soup = BeautifulSoup(detail_response.text, "html.parser")
    
    # Estrai il brand
    brand_tag = detail_soup.find("a", id="bylineInfo")
    product["Brand"] = brand_tag.get_text(strip=True) if brand_tag else "N/A"
    
    # Estrai ASIN dal sorgente pagina o dall'URL
    # Estrai la data di prima disponibilità dalla tabella dei dettagli prodotto
    # ... campi aggiuntivi ...

Avviso importante: visitare 100 pagine prodotto singole aumenta molto il rischio di ban. Metti in conto rotazione proxy e pause più lunghe.

Approccio Thunderbit: scraping delle subpage con un clic

Dopo aver estratto la pagina listing in una tabella, fai clic su “Scrape Subpages” in Thunderbit. L’AI visita ogni URL prodotto e arricchisce automaticamente la tabella con colonne aggiuntive — brand, ASIN, specifiche, caratteristiche. Nessun codice extra, nessun selettore, nessuna configurazione. È particolarmente utile per i team e-commerce che hanno bisogno di una visione completa per decisioni di sourcing ma non vogliono scrivere e mantenere un parser per le pagine dettaglio.

Automatizzare estrazioni ricorrenti: monitorare i Best Sellers nel tempo

Una singola estrazione è utile, ma il vero vantaggio competitivo arriva dal monitoraggio continuativo. Seguire quali prodotti salgono o scendono, cogliere i trend in anticipo e osservare le variazioni di prezzo nel corso di settimane o mesi: è questo che distingue una ricerca occasionale da una decisione davvero data-driven.

Approccio Python: pianificazione con cron

Su Linux/Mac puoi pianificare lo script Python con cron. Ecco la riga crontab per un’estrazione giornaliera alle 8:00:

0 8 * * * /usr/bin/python3 /home/user/amazon_scraper.py >> /home/user/logs/scrape.log 2>&1

Per un’estrazione settimanale ogni lunedì alle 9:00:

0 9 * * 1 /usr/bin/python3 /home/user/amazon_scraper.py >> /home/user/logs/scrape.log 2>&1

Su Windows puoi usare Task Scheduler per ottenere lo stesso risultato. Se vuoi una pianificazione sempre attiva senza tenere il laptop acceso, puoi deployare su un VPS o su AWS Lambda — ma questo aggiunge complessità infrastrutturale.

Aggiungi logging e notifiche di errore per intercettare eventuali run fallite. Non c’è niente di peggio che scoprire due settimane dopo che lo scraper si era rotto in silenzio.

Approccio Thunderbit: Scheduled Scraper in linguaggio naturale

Lo Scheduled Scraper di Thunderbit ti permette di descrivere l’intervallo in linguaggio naturale: scrivi “ogni lunedì alle 9” o “ogni giorno alle 8” e l’AI interpreta la pianificazione. Le estrazioni vengono eseguite sui server cloud di Thunderbit (non serve tenere aperto browser o computer) e i dati vengono esportati automaticamente su Google Sheets o Airtable. Il risultato è una dashboard di monitoraggio live senza gestione server: ideale per i team operations che vogliono visibilità continua senza il peso del DevOps.

Aspetti legali ed etici dello scraping su Amazon

Non sono un avvocato, e questo non è un consiglio legale. Ma ignorare il quadro normativo in un tutorial di scraping sarebbe irresponsabile — gli utenti dei forum sollevano esplicitamente dubbi sui Termini di servizio, e a ragione.

robots.txt di Amazon: al 2026, il robots.txt di Amazon contiene oltre 80 percorsi specifici Disallow, ma /gp/bestsellers/ NON è esplicitamente bloccato per gli user agent standard. Tuttavia, oltre 35 user agent dedicati all’AI (ClaudeBot, GPTBot, Scrapy, ecc.) ricevono un Disallow: / generalizzato. L’assenza di un blocco specifico non significa che Amazon approvi lo scraping.

Termini di servizio di Amazon: le Conditions of Use di Amazon (aggiornate a maggio 2025) vietano esplicitamente “l’uso di qualsiasi processo o tecnologia automatizzata per accedere, acquisire, copiare o monitorare qualsiasi parte del sito Amazon” senza autorizzazione scritta. Non è teoria: nel novembre 2025 Amazon ha citato in giudizio Perplexity AI per accesso automatizzato non autorizzato e ha ottenuto un’ingiunzione preliminare.

Il precedente hiQ v. LinkedIn: in hiQ Labs v. LinkedIn (Nono Circuito, 2022), la corte ha stabilito che lo scraping di dati pubblicamente disponibili probabilmente non viola il Computer Fraud and Abuse Act. Ma hiQ ha poi raggiunto un accordo e smesso di fare scraping: vincere sul CFAA non protegge da azioni per violazione contrattuale.

Linee guida pratiche:

  • Estrarre solo dati pubblicamente disponibili (prezzi, BSR, titoli prodotto — non dati personali)
  • Rispettare i rate limit e non sovraccaricare i server
  • Usare i dati per finalità lecite di intelligence competitiva
  • Consultare il proprio legale prima di fare scraping su larga scala
  • Tenere presente che oltre 20 stati USA hanno oggi una normativa completa sulla privacy

Lo scraping cloud di Thunderbit usa pattern di richieste standard simili a quelli di un browser, ma è sempre bene verificare la conformità con il proprio consulente legale.

Per questo non serve Python Se il tuo obiettivo è un foglio di calcolo e non una pipeline, bastano un clic e il gioco è fatto. Esporta direttamente in Excel, Google Sheets, Airtable o Notion. Get Started Free

Quale metodo dovresti usare? Guida rapida alla scelta

In breve:

  • “Sto imparando Python e voglio un progetto per il weekend.” → Metodo 1 (requests + BeautifulSoup). Imparerai tantissimo su richieste HTTP, parsing HTML e difese anti-bot di Amazon.
  • “Devo estrarre pagine ricche di JavaScript o sessioni con login.” → Metodo 2 (Selenium). È più pesante, ma gestisce i contenuti dinamici.
  • “Sto eseguendo scraping di produzione su larga scala.” → Metodo 3 (Scraping API). Lascia a qualcun altro la gestione di proxy e rendering. Il costo totale di proprietà favorisce le API sotto le 500K richieste/mese.
  • “Non sono uno sviluppatore e voglio i dati in 2 minuti.” → Metodo 4 (Thunderbit). Nessun codice, nessun selettore, nessuna manutenzione.
  • “Mi serve monitoraggio continuo senza gestire server.” → Thunderbit Scheduled Scraper. Impostalo una volta e poi dimenticatene.

Prova Thunderbit per i Best Sellers di Amazon Get Started Free

Conclusione e takeaway principali

Dopo un weekend di test, ecco cosa è emerso davvero:

requests + BeautifulSoup è perfetto per imparare, ma il limite del lazy loading (solo circa 30 prodotti su 50) e i selettori CSS fragili lo rendono poco pratico per la produzione.

Selenium risolve il problema del lazy loading e cattura tutti e 50 i prodotti per pagina, ma è lento, consuma molta memoria ed è ancora rilevabile dalle difese anti-bot di Amazon.

Le scraping API offrono la migliore affidabilità per lo scraping su scala produttiva — circa 99% di successo su Amazon — ma i costi crescono e il codice di parsing serve comunque.

Thunderbit è stato nettamente il più veloce in termini di time-to-data. L’AI gestisce cambiamenti di layout, lazy loading, paginazione e misure anti-bot senza alcuna configurazione. Per utenti non tecnici o team che hanno bisogno di dati ricorrenti senza il peso del DevOps, è l’opzione più pratica.

La lezione più grande? Le difese anti-bot di Amazon e i frequenti cambi di layout fanno sì che le soluzioni senza manutenzione facciano risparmiare più tempo nel lungo periodo. Ogni ora spesa a debuggare selettori rotti e ruotare proxy è un’ora sottratta all’analisi vera.

Vuoi provare l’approccio no-code? Il piano gratuito di Thunderbit ti offre crediti sufficienti per estrarre alcune categorie Best Sellers e vedere i risultati con i tuoi occhi. Preferisci la strada Python? Gli esempi di codice sopra ti permettono di partire subito. In ogni caso, avrai i dati dei Best Seller di Amazon in un foglio di calcolo invece di fissare una scheda del browser.

Per approfondire altri approcci allo scraping, consulta le nostre guide su come estrarre prodotti e recensioni da Amazon, come estrarre dati da un sito web in Excel e i migliori AI web scraper. Puoi anche guardare le guide passo per passo sul canale YouTube di Thunderbit.

Scopri di più

Fawad Khan
Fawad Khan
Fawad scrive per lavoro e, a dirla tutta, gli piace parecchio. Ha passato anni a capire cosa rende un testo persuasivo e cosa invece fa scorrere oltre i lettori. Se gli parli di marketing, può andare avanti per ore. Se gli parli di carbonara, ancora di più.
Indice
Thunderbit · Agente AI per i dati web

Estrai dati da qualsiasi pagina in 1 clic

Scelto da oltre 250.000 utenti
piano gratuito disponibile
Dalla pagina web al foglio di calcolo
Descrivi ciò che ti serve — l’AI Agent di Thunderbit lo estrae ed esporta in Excel, Google Sheets, Airtable o Notion. Puoi iniziare gratis.
Chrome Store Rating
PRODUCT HUNT#1 Product of the Week