Scraping web per il confronto dei prezzi nel 2024 - Passi semplici

Pitone, Scraping, Gennaio-04-20235 minuti di lettura

Il web scraping è l'arte di estrarre dati da Internet. Per quanto riguarda le sue applicazioni, ha una vasta gamma di applicazioni. Una di queste è il confronto dei prezzi di diversi siti web. Lo shopping online è diventato il boom del settore e confrontare i prezzi di alcuni prodotti è diventata una necessità. Noi

Il web scraping è l'arte di estrarre dati da Internet. Per quanto riguarda le sue applicazioni, ha una vasta gamma di applicazioni. Una di queste è il confronto dei prezzi di diversi siti web. Lo shopping online è diventato il boom del settore e confrontare i prezzi di alcuni prodotti è diventata una necessità. Tutti noi visitiamo più siti web quando dobbiamo acquistare un determinato prodotto, ma avete mai pensato di creare uno strumento di comparazione dei prezzi che faccia lo stesso lavoro per voi e vi metta davanti l'offerta migliore?  

In questo articolo, realizzeremo un fantastico strumento di web scraping per il confronto dei prezzi in Python che vi permetterà di monitorare il prezzo dei prodotti attraverso diverse fonti e vi informerà sulle prestazioni dei diversi concorrenti sul mercato. Inoltre, informerà l'azienda se il prezzo di uno specifico prodotto sale o scende rispetto a quello previsto.

L'origine dei dati che utilizzeremo per questo articolo sarà un file JSON e confronteremo i prezzi dei prodotti ottenuti da Amazon, eBay e Walmart. I nostri dati di esempio si presentano come di seguito,

Non esitate a saltare a qualsiasi sezione per saperne di più sul web scraping per il confronto dei prezzi in python!

Indice dei contenuti

Fasi del Web Scraping per il confronto dei prezzi:

[
  {
    "last_visited": "2018-01-30T13:38:01",
    "name": "PUMA Men's Evospeed 17.4 TT Soccer Shoe",
    "amazon_price": 36.94,
    "ebay_price": 37,
    "walmart_price": 37,
    "amazon_url": "https://www.amazon.com/PUMA-Evospeed-Soccer-Ultra-Yellow-Peacoat-Orange/dp/B01J5LEMZI/",
    "ebay_url": "https://www.ebay.com/itm/PUMA-Mens-Evospeed-17-4-Tt-Soccer-Shoe/302471489090",
    "walmart_url": "https://www.walmart.com/ip/PUMA-Men-s-Evospeed-17-4-Tt-Soccer-Shoe/587074448",
    "description": "The new evospeed 17.4 is a performance football boot for players of all levels. The soft and lightweight synthetic leather on the upper keeps the boot lightweight, comfortable and ensures durability. The lightweight outsole offers the perfect balance between traction, stability and acceleration PUMA is the global athletic brand that successfully fuses influences from sport, lifestyle and fashion. PUMA's unique industry perspective delivers the unexpected in sport-lifestyle footwear, apparel and accessories, through technical innovation and revolutionary design.",
    "brand": "PUMA",
    "image": "https://images-na.ssl-images-amazon.com/images/I/61v1mylcAqL._UL1500_.jpg"
  },
  {
    "last_visited": "2018-01-30T13:38:07",
    "name": "L'Oreal Paris Skin Care Revitalift Cicacream Face Moisturizer",
    "amazon_price": 13.97,
    "ebay_price": 13.99,
    "walmart_price": 13.97,
    "amazon_url": "https://www.amazon.com/LOreal-Paris-Revitalift-Cicacream-Moisturizer/dp/B074MBDRHW",
    "ebay_url": "https://www.ebay.com/itm/LOREAL-Paris-NEW-Revitalift-Cicacream-Anti-Wrinkle-Skin-Barrier-Repair-ORIGINAL/112715734801",
    "walmart_url": "https://www.walmart.com/ip/L-Or-al-Paris-Revitalift-Cicacream-Anti-Wrinkle-Skin-Barrier-Repair/519350834",
    "description": "Skin's moisture barrier weakens with age, resulting in greater moisture loss, more prominent wrinkles and loss of firmness. Lightweight, protective cream is formulated with Pro-Retinol, a powerful wrinkle-fighting ingredient and Centella Asiatica, an herb used in traditional Chinese medicine. Strengthens and repairs skin barrier to help resist visible lines, loss of firmness and other signs of aging that a weakened skin barrier can accentuate. See visible results immediately: skin feels healthier, softer, smoother and more supple. Skin feels noticeably more hydrated. Skin barrier is stronger, helping to resist signs of aging. In two weeks: fine lines appear visibly reduced. Firmness and elasticity look noticeably improved. In four weeks: wrinkles appear less visible. Clarity and tone improves, skin exudes luminosity. Skin continues to look and feel soft, smooth, healthy.",
    "brand": "L'Oreal Paris",
    "image": "https://images-na.ssl-images-amazon.com/images/I/71Ff2vn4vjL._SL1500_.jpg"
  },
  {
    "last_visited": "2018-01-30T13:38:12",
    "name": "Adidas Dynamic Pulse By Adidas For Men",
    "amazon_price": 6.96,
    "ebay_price": 18.99,
    "walmart_price": 7,
    "amazon_url": "https://www.amazon.com/Adidas-Dynamic-Toilette-3-4-Ounce-Bottle/dp/B000VON5F2/",
    "ebay_url": "https://www.ebay.com/itm/Adidas-DYNAMIC-PULSE-Cologne-for-Men-3-4-oz-edt-3-3-Spray-New-in-BOX/252837623533",
    "walmart_url": "https://www.walmart.com/ip/Adidas-Dynamic-Pulse-for-Men-3-4-oz-EDT/28664356",
    "description": "Launched by the design house of Adidas in 1997, ADIDAS DYNAMIC PULSE is a men's fragrance that possesses a blend of A fresh scent of citrus, cedar and mint with low tones of sweet fruits, fragrant woods and tonka bean. It is recommended for daytime wear.When applying any fragrance please consider that there are several factors which can affect the natural smell of your skin and, in turn, the way a scent smells on you. For instance, your mood, stress level, age, body chemistry, diet, and current medications may all alter the scents you wear. Similarly, factor such as dry or oily skin can even affect the amount of time a fragrance will last after being applied",
    "brand": "adidas",
    "image": "https://images-na.ssl-images-amazon.com/images/I/41%2BAnOP5nbL.jpg"
  },
  {
    "last_visited": "2018-01-30T13:38:19",
    "name": "Canon EOS Rebel T6 Digital SLR Camera",
    "amazon_price": 449,
    "ebay_price": 449,
    "walmart_price": 449,
    "amazon_url": "https://www.amazon.com/Canon-Digital-Camera-18-55mm-3-5-5-6/dp/B01CO2JPYS",
    "ebay_url": "https://www.ebay.com/itm/Canon-EOS-Rebel-T6-DSLR-Camera-with-18-55mm-Lens/232596041502",
    "walmart_url": "https://www.walmart.com/ip/Canon-EOS-Rebel-T6-DSLR-Camera-with-18-55mm-Lens-Black/50820749",
    "description": "",
    "brand": "Canon",
    "image": "https://images-na.ssl-images-amazon.com/images/I/81YszfZS8%2BL._SL1500_.jpg"
  },
  {
    "last_visited": "2018-01-30T13:38:25",
    "name": "Woodland Fox Critter 36' Mylar Balloon",
    "amazon_price": 5.49,
    "ebay_price": 6.49,
    "walmart_price": 7.6,
    "amazon_url": "https://www.amazon.com/Woodland-Fox-Critter-Mylar-Balloon/dp/B00S9TKVYO",
    "ebay_url": "https://www.ebay.com/itm/Woodland-Critters-Fox-36-inch-Foil-Balloon/132058119680",
    "walmart_url": "https://www.walmart.com/ip/Woodland-Fox-Foil-Balloon/43350002",
    "description": "Celebrate any occasion with an adorable woodland fox critter balloon! 36\" Woodland Critters fox shape foil balloon.",
    "brand": "Betallic",
    "image": "https://images-na.ssl-images-amazon.com/images/I/71Z9bG-BzuL._SL1500_.jpg"
  }
]

Alcuni dei campi importanti per lo script che stiamo scrivendo sono amazon_price, ebay_price e walmart_price.

Ora abbiamo visto i nostri dati. Passiamo quindi alla fase di sviluppo.

Realizzeremo lo strumento in Python 3.x e, prima di tutto, utilizzeremo la libreria JSON per il parsing di JSON e l'ulteriore elaborazione. Lo strumento fornisce una funzionalità sorprendente, stampando il nome del prodotto e il prezzo del sito. Importeremo la libreria JSON per analizzare JSON.

importare json

Ora chiameremo la funzione open() nel frammento di codice per leggere il contenuto del file JSON,

importare json
 
if __name__ == '__main__':
    prezzo_dati = Nessuno
    prezzo = []
   con open('data.json', encoding='utf8') as f:
        prezzo_dati = f.read()
 
   se prezzo_dati non è None:
       json_price_data = json.loads(price_data)

Ora che i nostri dati JSON sono stati letti, li convertiremo nelle strutture dati integrate di Python, per cui il codice chiamerà il metodo json.loads() per convertire la stringa JSON in un dizionario o in un elenco di dizionari, a seconda delle voci.

Poiché l'obiettivo principale è trovare il negozio che vende il prodotto al prezzo più basso, il nostro obiettivo è trovare il prezzo minimo e altri dettagli rilevanti come il nome del prodotto e del negozio. Le informazioni sui prezzi dei negozi interessati sono memorizzate nelle chiavi amazon_price, ebay_price e Walmart_price. Per trovare il prezzo minimo di ogni prodotto, dobbiamo iterare le voci del listino prezzi.

for d in json_price_data:
            price.append({'name': d['name'], 'price': float(d['amazon_price']), 'url': d['amazon_url']})
            price.append({'name': d['name'], 'price': float(d['walmart_price']), 'url': d['walmart_url']})
            price.append({'name': d['name'], 'price': float(d['ebay_price']), 'url': d['ebay_url']})
            minPricedItem = min(price, key=lambda x: x['price'])
            print(minPricedItem)
            print('=================')
            price = []

Stiamo utilizzando lambda e impostando la chiave di min() per assicurarci che il campo prezzo venga confrontato. Il risultato è il seguente:

Ristrutturiamo un po' il formato.

for d in json_price_data:
            price.append({'name': d['name'], 'price': d['amazon_price'], 'url': d['amazon_url']})
            price.append({'name': d['name'], 'price': d['walmart_price'], 'url': d['walmart_url']})
            price.append({'name': d['name'], 'price': d['ebay_price'], 'url': d['ebay_url']})
            minPricedItem = min(price, key=lambda x: float(x['price']))
            store_name = ''
            # Pick the store name based on url
            if 'amazon' in minPricedItem['url'].lower():
                store_name = 'Amazon'
            elif 'walmart' in minPricedItem['url'].lower():
                store_name = 'Amazon'
            elif 'ebay' in minPricedItem['url'].lower():
                store_name = 'eBay'
            print('{} is available in cheap price at {}. The price is ${}'.format(minPricedItem['name'], store_name,
                                                                                 minPricedItem['price']))
            price = []

Il risultato sarà il seguente:

Congratulazioni! Abbiamo realizzato con successo lo script che potete eseguire periodicamente per ottenere i prezzi aggiornati dei prodotti.

Qual è il miglior proxy per il web scraping per il confronto dei prezzi con Python?

ProxyScrape è uno dei più popolari e affidabili fornitori di proxy online. I tre servizi proxy includono server proxy dedicati ai centri dati, server proxy residenziali e server proxy premium. Quindi, qual è la migliore soluzione possibile per il miglior proxy HTTP per il web scraping per il confronto dei prezzi con python? Prima di rispondere a questa domanda, è meglio vedere le caratteristiche di ciascun server proxy.

Un proxy dedicato per datacenter è più adatto per attività online ad alta velocità, come lo streaming di grandi quantità di dati (in termini di dimensioni) da vari server a scopo di analisi. È uno dei motivi principali per cui le organizzazioni scelgono i proxy dedicati per trasmettere grandi quantità di dati in breve tempo.

Un proxy dedicato per datacenter ha diverse caratteristiche, come la larghezza di banda illimitata e le connessioni simultanee, i proxy HTTP dedicati per facilitare la comunicazione e l'autenticazione IP per una maggiore sicurezza. Con un uptime del 99,9%, potete essere certi che il datacenter dedicato funzionerà sempre durante qualsiasi sessione. Infine, ma non meno importante, ProxyScrape fornisce un eccellente servizio clienti e vi aiuterà a risolvere i vostri problemi entro 24-48 ore lavorative. 

Il prossimo è un proxy residenziale. Quello residenziale è il proxy ideale per tutti i consumatori. Il motivo principale è che l'indirizzo IP di un proxy residenziale assomiglia all'indirizzo IP fornito dall'ISP. Ciò significa che ottenere il permesso dal server di destinazione per accedere ai suoi dati sarà più facile del solito. 

L'altra caratteristica del proxy residenziale di ProxyScrapeè la funzione di rotazione. Un proxy a rotazione vi aiuta a evitare un divieto permanente sul vostro account perché il proxy residenziale cambia dinamicamente il vostro indirizzo IP, rendendo difficile per il server di destinazione verificare se state usando un proxy o meno. 

Oltre a questo, le altre caratteristiche di un proxy residenziale sono: larghezza di banda illimitata, insieme alla connessione concorrente, proxy HTTP/s dedicati, proxy in qualsiasi sessione di tempo grazie agli oltre 7 milioni di proxy presenti nel pool di proxy, autenticazione con nome utente e password per una maggiore sicurezza e, ultimo ma non meno importante, la possibilità di cambiare il server nazionale. È possibile selezionare il server desiderato aggiungendo il codice del paese all'autenticazione del nome utente. 

L'ultimo è il proxy premium. I proxy premium sono identici ai proxy dedicati ai datacenter. La funzionalità rimane la stessa. La differenza principale è l'accessibilità. Nei proxy premium, l'elenco dei proxy (l'elenco che contiene i proxy) è reso disponibile a tutti gli utenti della rete ProxyScrape. Per questo motivo i proxy premium costano meno dei proxy dedicati ai data center.

Quindi, qual è la migliore soluzione possibile per il miglior proxy HTTP per il web scraping per il confronto dei prezzi utilizzando python? La risposta è "proxy residenziale". Il motivo è semplice. Come detto in precedenza, il proxy residenziale è un proxy rotante, il che significa che il vostro indirizzo IP cambierà dinamicamente nel corso di un periodo di tempo, il che può essere utile per ingannare il server inviando molte richieste in un breve lasso di tempo senza ottenere un blocco dell'IP. 

La cosa migliore è cambiare il server proxy in base al paese. È sufficiente aggiungere il codice ISO_CODE del paese alla fine dell'autenticazione IP o dell'autenticazione con nome utente e password. 

Letture consigliate:

Scraping dei commenti di YouTube - 5 semplici passiI migliori 8 strumenti di scraping web in Python nel 2023Scraping web per articoli di notizie con Python - Il modo migliore nel 2023

Domande frequenti:

1. Che cos'è il price scraping?
Il price scraping, come suggerisce il nome, è il processo di estrazione del prezzo di un prodotto o di un servizio online per eseguire qualsiasi analisi, come quella della concorrenza, per migliorare la strategia di marketing. Automatizzare il processo di scraping può aiutarvi a ridurre tempo e risorse e potete farlo con l'aiuto di python.
2. Qual è il miglior proxy per il web scraping per il confronto dei prezzi?
Il proxy migliore per eseguire il web scraping per il confronto dei prezzi è un "proxy residenziale". Il motivo è che il proxy residenziale è un proxy a rotazione, il che significa che il vostro indirizzo IP cambierà dinamicamente nel corso di un periodo di tempo, il che può essere utile per ingannare il server inviando molte richieste in un breve lasso di tempo senza ottenere un blocco dell'IP.
3. Il web scraping per il confronto dei prezzi è legale?
La risposta è sì. È possibile effettuare lo scraping del prezzo da un sito web di e-commerce, poiché tutte le informazioni sono rese disponibili al pubblico, il che significa che è possibile effettuare lo scraping di tutti i dati pubblici.

Conclusione

This article explored one more wonder of web scraping, i.e. “Price Comparison”. Not only this, we have built a tool that can do the price comparison job for you and keep you updated with the market trends. This article hopes to give enough information on web scraping for price comparison in an easy way. A proxy server is the best companion for web scraping. ProxyScrape provides best in a class residential proxy for your web scraping for price comparison projects. You can check the best residential proxy here.