Come creare da zero un rilevatore di prezzi Walmart?

creare un rilevatore di prezzi walmart

Se fate regolarmente acquisti da Walmart, potreste chiedervi quando un determinato articolo sarà in saldo o avrà un'offerta speciale. Controllare manualmente i prezzi ogni giorno può essere una seccatura, ma con un po' di tecnologia per creare un tracker dei prezzi di Walmart, è possibile automatizzare il processo per monitorare le variazioni di prezzo e ricevere una notifica quando il prezzo scende.

Questa guida vi guiderà passo dopo passo nella costruzione del vostro price tracker Walmart, dallo scraping e dalla memorizzazione dei dati al monitoraggio dei prezzi e agli avvisi automatici. Anche se siete alle prime armi con la programmazione, sarete in grado di seguirla e di farla funzionare!

Cosa possono fare i rilevatori di prezzo di Walmart?

Supponiamo che stiate pensando di acquistare un nuovo televisore da Walmart, ma non siete sicuri che questo sia il momento migliore. Controllare manualmente i prezzi ogni giorno richiede molto tempo. È qui che uno strumento di monitoraggio dei prezzi si rivela utile.

  • Monitoraggio automatico del prezzo del prodotto 24 ore su 24, 7 giorni su 7.

  • Tenere un registro delle tendenze storiche dei prezzi.

  • Notifica istantanea via e-mail o SMS quando il prezzo scende.

Cosa vi serve per iniziare a monitorare

Prima di immergervi, assicuratevi di avere pronti i seguenti strumenti:

  1. Pitone (versione consigliata 3.8 o superiore) - per scrivere ed eseguire lo script

  2. Editor di codice (VS Code o PyCharm) - per rendere la codifica più semplice ed efficiente.

  3. Account sviluppatore Walmart (facoltativo) - l'utilizzo dell'API ufficiale offre maggiore stabilità

  4. IP proxy (facoltativo) - aiuta a evitare di essere bloccati durante le richieste più frequenti

Installare le librerie Python necessarie

Aprite il terminale o il prompt dei comandi ed eseguite il seguente comando:

pip installa requests beautifulsoup4 selenium pandas schedule smtplib

Se si intende utilizzare l'automazione del browser, è necessario anche installare ChromeDriver o geckodrivera seconda del browser utilizzato.

Come ottenere i prezzi dei prodotti Walmart

Metodo 1: API ufficiale di Walmart (consigliato)

Walmart offre un'API per sviluppatori che consente di recuperare direttamente i dati dei prodotti.

Passo 1: ottenere una chiave API

Visitate il portale degli sviluppatori di Walmart.

costruire il rilevatore di prezzi walmart con l'API ufficiale

Creare un account e richiedere una chiave API (l'approvazione potrebbe richiedere del tempo).

Passo 2: Recuperare il prezzo con Python

richieste di importazione

API_KEY = "YOUR_SCRAPERAPI_KEY"
PRODUCT_URL = "https://www.walmart.com/ip/123456789" # Sostituire con l'URL del vostro prodotto

def get_price():  
    response = requests.get(
        f "http://api.scraperapi.com?api_key={API_KEY}&url={PRODUCT_URL}"
    )  
    # Estrarre il prezzo dall'HTML (esempio semplificato)
    restituire "29,99" # Sostituire con la logica di parsing effettiva

prezzo = get_price()
print(f "Prezzo attuale: ${prezzo}") 

Sebbene questo metodo sia legale e meno probabile che venga bloccato, richiede l'accesso all'API e può avere limiti di velocità.

Metodo 2: Scrape con un web crawler (alternativa)

Se non si vuole usare l'API, si possono usare strumenti come Selenio o Bella Zuppa per ricavare il prezzo direttamente dalla pagina del prodotto.

Esempio: Estrarre il prezzo dalla pagina del prodotto in modo automatico con Selenium

da selenium import webdriver
da selenium.webdriver.chrome.options import Options

# Impostare il browser headless (viene eseguito senza aprire una finestra)
opzioni = Opzioni()
options.add_argument("--headless")
driver = webdriver.Chrome(options=options)

product_url = "https://www.walmart.com/ip/123456789" # Sostituire con l'URL del proprio prodotto
driver.get(product_url)

# Trovare l'elemento prezzo (potrebbe essere necessario modificare l'XPath)
price_element = driver.find_element("xpath", '//span[@itemprop="prezzo"]')
prezzo = prezzo_elemento.testo
print(f "Prezzo attuale: {prezzo}")

driver.quit() # Chiudere il browser

Walmart dispone di protezioni anti-scraping e le richieste frequenti potrebbero far bloccare il vostro IP. In questo modo, l'aggiunta di time.sleep(5) tra una richiesta e l'altra per evitare di colpire il sito troppo velocemente e l'utilizzo di IP proxy a rotazione sono consigliati per garantire l'affidabilità.

Walmart Scraping Detection Bypass [Opzionale]

La frequenza di richiesta raccomandata per un singolo indirizzo IP è non più di 1 volta al minuto senza attivare le protezioni anti-bot. Pertanto, quando si visitano e si scaricano frequentemente le pagine di Walmart, l'utilizzo di proxy che offrano IP puliti e cambiare regolarmente l'UA sono essenziali per evitare di essere segnalati e di subire un divieto di accesso all'IP. Ecco come gestire e ottimizzare la configurazione del price tracker Walmart.

(1) Gestione del pool di deleghe

Poiché il vostro indirizzo IP potrebbe essere temporaneamente bloccato a causa di troppe richieste di scraping, con conseguente errore 403 Forbidden, e i prezzi dei prodotti Walmart possono variare a seconda della regione - ad esempio, gli utenti statunitensi e canadesi potrebbero vedere prezzi diversi per lo stesso articolo - è necessario un vasto pool di proxy con milioni di IP da ruotare.

L'impressionante rete di OkeyProxy dispone di oltre 150 milioni di IP reali, distribuiti in oltre 200 Paesi. Supporta tutti i dispositivi e i casi d'uso, compresa la rotazione automatica degli IP per lo scraping e il tracciamento dei dati. Questo servizio proxy offre prezzi competitivi, posizionandosi come la scelta migliore per i proxy scraper residenziali. Offre una PROXY TRIAL di $3/GB, che consente a tutti gli utenti di sperimentare l'affidabilità, la velocità e la versatilità dei proxy scraping.

# Pool proxy - sostituire con i propri IP proxy
PROXY_POOL = [
    "http://45.123.123.123:8080",
    "http://67.234.234.234:8888",
    "http://89.111.222.333:3128"
]

# Seleziona e convalida in modo casuale un proxy dal pool
def rotate_proxy():
    mentre True:
        proxy = random.choice(PROXY_POOL)
        se check_proxy(proxy):
            restituisce il proxy
        altrimenti:
            print(f "Il proxy {proxy} non è disponibile, provarne un altro...")
            PROXY_POOL.remove(proxy)
    raise Exception("Non ci sono più proxy validi nel pool.")

# Verificare se un proxy funziona facendo una richiesta di prova
def check_proxy(proxy):
    try:
        test_url = "https://httpbin.org/ip"
        response = requests.get(test_url, proxies={"http": proxy}, timeout=5)
        return response.status_code == 200
    except:
        return False

(2) Strategie anti-bot

Randomizzare le intestazioni delle richieste

Per evitare di essere individuati come bot, ruotate il vostro User-Agent a ogni richiesta:

da fake_useragent import UserAgent

ua = UserAgent()
headers = {"User-Agent": ua.random}

Aggiungere ritardi casuali tra le richieste

L'introduzione di un ritardo tra le richieste aiuta a imitare il comportamento umano:

importare il tempo
Importazione casuale

time.sleep(random.uniform(3, 10)) # Attendere 3-10 secondi prima della richiesta successiva

Queste strategie aiutano a ridurre il rischio di essere bloccati e a migliorare l'affidabilità dello scraper nel tempo.

Salvataggio della cronologia dei prezzi dei prodotti Walmart

Dopo aver recuperato il prezzo, è importante memorizzarlo in modo da poter monitorare le tendenze storiche nel tempo.

Metodo 1: memorizzare i dati in un database SQLite

importare sqlite3
da datetime importa datetime

# Creare o connettersi a un database
conn = sqlite3.connect("walmart_prices.db")
cursore = conn.cursor()

# Creare una tabella se non esiste
cursor.execute('''
    CREATE TABLE IF NOT EXISTS prices (
        product_id TEXT,
        prezzo REALE,
        data TESTO
    )
''')

# Inserire i nuovi dati di prezzo
cursor.execute("INSERT INTO prices VALUES (?, ?, ?)",
               (product_id, prezzo, datetime.now())
conn.commit()
conn.close()

La memorizzazione dei dati in un database SQLite locale dopo lo scraping di Walmart.com è leggera e crea automaticamente i file, senza bisogno di installare software aggiuntivi.

Metodo 2: memorizzare i dati in un file CSV (più semplice)

importare pandas come pd
da datetime importa datetime

dati = {
    "product_id": [product_id],
    "prezzo": [prezzo],
    "data": [datetime.now()]
}

df = pd.DataFrame(data)
df.to_csv("prezzi.csv", mode="a", header=False) # Modalità di appendimento

Entrambi i metodi funzionano bene: utilizzare un database per le interrogazioni più avanzate o CSV per la semplicità.

Avvisi quotidiani sui prezzi di Walmart

1. Controllare i prezzi di Walmart in base a un determinato percorso

Utilizzare il programma per eseguire automaticamente lo script di controllo dei prezzi a un'ora specifica ogni giorno:

Importazione di orari
tempo di importazione

def check_price():
    # Inserire qui il codice di scraping e di controllo dei prezzi
    print("Controllo del prezzo...")

# Eseguire l'attività ogni giorno alle 9:00 del mattino
schedule.every().day.at("09:00").do(check_price)

mentre Vero:
    schedule.run_pending()
    time.sleep(60) # Controlla ogni minuto le attività pianificate

2. Inviare notifiche via e-mail quando il prezzo scende

importare smtplib
da email.mime.text importare MIMEText

def send_email(prezzo):
    mittente = "[email protected]"
    destinatario = "[email protected]"
    password = "tua_email_password_o_app_password"

    msg = MIMEText(f "Il prezzo del prodotto è sceso! Ultimo prezzo: ${prezzo}")
    msg["Oggetto"] = "Allarme prezzi Walmart".
    msg["Da"] = mittente
    msg["A"] = destinatario

    con smtplib.SMTP("smtp.gmail.com", 587) come server:
        server.starttls()
        server.login(mittente, password)
        server.sendmail(mittente, destinatario, msg.as_string())

Poi, all'interno del vostro check_price() attivare l'allarme quando il prezzo è inferiore al target:

if price = 100: # Impostare la soglia di prezzo desiderata
    send_email(prezzo)

Distribuzione del Price Tracker di Walmart nel cloud

Se si desidera che il tracker dei prezzi di Walmart venga eseguito continuamente o a orari programmati, è possibile distribuire lo script nel cloud utilizzando una delle seguenti opzioni:

  • Azioni GitHub - Gratuito e ottimo per l'esecuzione di script una volta al giorno

  • Server cloud (AWS, Azure, ecc.) - Ideale per il monitoraggio in tempo reale

  • PythonAnywhere - Facile da usare per i principianti, anche se la versione gratuita presenta alcuni limiti

Ecco un esempio che carica lo strumento di scraping su Github dopo il rilevamento dei prezzi di Walmart, che è più comune.

Programmare i rilevatori di prezzo di Walmart in GitHub

Innanzitutto, creare un file Repository GitHub.

Quindi aggiungere .github/workflows/tracker.yml:

nome: Inseguitore di prezzi Walmart

su:
  orario:
    - cron: "0 14 * * *" # 2 PM UTC (regolare per il fuso orario)

lavori:
  run-tracker:
    runs-on: ubuntu-latest
    passi:
      - usa: actions/checkout@v4
      - nome: Run Tracker
        esecuzione: python tracker.py

Funzioni bonus per tenere traccia del prezzo degli articoli Walmart

1. Monitoraggio e scraping di più dati di Walmart Itens

È possibile tenere traccia facilmente di più prodotti memorizzandoli in un elenco e scorrendo i dati:

PRODUCT_LIST = [
    {"id": "123456789", "nome": "Auricolari senza fili", "soglia": 50},
    {"id": "987654321", "nome": "Smart Watch", "soglia": 200}
]

def monitor_multiple_products():
    per prodotto in PRODUCT_LIST:
        prezzo = get_price(prodotto["id"])
        if prezzo = prodotto["soglia"]:
            send_email(f"{prodotto['nome']} è appena sceso a ${prezzo}!")

In questo modo, riceverete avvisi separati per ogni articolo che state osservando, utilissimi durante i grandi eventi di vendita!

2. Visualizzare le tendenze dei prezzi dai dati di monitoraggio salvati

Volete analizzare le variazioni di prezzo nel tempo? Se si memorizzano i dati sui prezzi in un database CSV o SQLite, è sufficiente tracciare le tendenze storiche usando panda e matplotlib:

importare pandas come pd
importare matplotlib.pyplot come plt
importare sqlite3

def plot_price_history():
    # Caricare i dati dal database SQLite (o si può usare pd.read_csv per i file CSV)
    conn = sqlite3.connect('walmart_prices.db')
    df = pd.read_sql_query("SELECT * FROM prices", conn)
    conn.close()

    # Convertire la colonna data in formato datetime
    df['date'] = pd.to_datetime(df['date'])

    # Opzionale: filtro per un prodotto specifico
    product_id = "123456789"
    product_df = df[df['product_id'] == product_id]

    # Traccia
    plt.figure(figsize=(10, 5))
    plt.plot(product_df['date'], product_df['price'], marker='o', linestyle='-')
    plt.title(f "Andamento del prezzo del prodotto {product_id}")
    plt.xlabel("Data")
    plt.ylabel("Prezzo (USD)")
    plt.grid(True)
    plt.xticks(rotazione=45)
    plt.tight_layout()
    plt.savefig("price_history.png")
    plt.show()

Potreste programmare questa funzione in modo che venga eseguita settimanalmente e inviare automaticamente il grafico alla vostra casella di posta!

3. Creazione di un cruscotto web per l'inseguimento dei prezzi di Walmart

È possibile creare un semplice pannello Walmart Price Tracker usando Fiaschetta o Streamlit per visualizzare i prezzi e le tendenze dei prodotti in un'interfaccia web.

Ad esempio, Flask offre modelli HTML in cui è possibile mostrare i prezzi correnti, le tendenze storiche (come immagini o grafici) e altro ancora. Ecco un esempio di base per iniziare:

da flask import Flask, render_template
importare pandas come pd
importare sqlite3

app = Flask(__name__)

@app.route("/")
def index():
    conn = sqlite3.connect("walmart_prices.db")
    df = pd.read_sql_query("SELECT * FROM prices", conn)
    conn.close()

    latest_prices = df.sort_values("date").groupby("product_id").last().reset_index()
    return render_template("index.html", data=ultimi_prezzi.to_dict(orient="records"))

Successivamente, creare un semplice modello HTML (templates/index.html) per visualizzare i prezzi dei prodotti.

modello html di monitoraggio dei prezzi di walmart

Domande frequenti (FAQ)

D1: Perché il mio scraper viene bloccato?

State inviando troppe richieste in un breve periodo di tempo. Utilizzare deleghe d'élite per ruotare gli indirizzi IP e aggiungere un ritardo casuale tra ogni richiesta per evitare di superare i limiti di velocità:

time.sleep(random.randint(2, 5)) # Attendere 2-5 secondi prima della richiesta successiva

D2: Come si trova l'ID del prodotto?

Andate alla pagina del prodotto Walmart: il numero che viene dopo /ip/ nell'URL è l'ID del prodotto. Ad esempio:

https://www.walmart.com/ip/123456789 → L'ID del prodotto è 123456789

D3: Posso monitorare più prodotti contemporaneamente?

Sì! Basta creare un elenco di ID prodotto e scorrerlo:

product_list = ["123", "456", "789"]

per product_id in product_list:
    prezzo = get_price(product_id)
    save_price(product_id, price)

È anche possibile estendere questo sistema per inviare avvisi separati per ciascun prodotto se i prezzi scendono.

Conclusione

Tutto qui! Ora avete un rilevatore di prezzi Walmart completamente automatizzato che monitora i prezzi 24 ore su 24, 7 giorni su 7, e vi avvisa immediatamente quando c'è un calo.

Se avete implementato un price tracker di walmart.com su scala, è importante rispettare le linee guida del robots.txt di Walmart (visualizza il regolamento qui) e ruotare gli IP dei proxy di conseguenza.

Con il tuo rilevatore di prezzi Walmart personalizzato, puoi controllare i prezzi mentre dormi e non perdere mai più un'offerta!

Per saperne di più

Servizio proxy Socks5/Http di prim'ordine

  • Piani scalabili: Statico/Proxy residenziali a rotazione
  • Integrazione perfetta: Win/iOS/Android/Linux
  • Alta sicurezza: Ideale per i browser anti-rilevamento, gli emulatori, gli scrapers, ecc.
  • Prestazioni affidabili: Trasferimento rapido e bassa latenza
Prova gratisfreccia-destra
Servizio personalizzato 24/7
150 M+ Indirizzo IP
Città/PSG mirati
Supporto API