donker proxyscrape logo

Web Scraping for Price Comparison in 2024– Easy Steps

Python, Schrapen, Januari-03-20235 min gelezen

Web scraping is de kunst om gegevens van het internet te halen. Het heeft een groot aantal toepassingen. Een daarvan is het vergelijken van prijzen van verschillende websites. Online winkelen is nu een hype in de industrie en het vergelijken van de prijzen van bepaalde producten is een noodzaak geworden. We bezoeken allemaal meerdere websites als we een bepaald product willen kopen, maar heb je er ooit aan gedacht om een prijsvergelijker te maken die hetzelfde werk voor je doet en de beste deal voor je neus zet?  

In dit artikel zullen we een verbazingwekkende web scraping voor prijsvergelijkingstool in Python maken, waarmee je de prijs van producten uit verschillende bronnen kunt volgen en je kunt informeren over de prestaties van verschillende concurrenten op de markt. Bovendien zal het ook het bedrijf informeren of de prijs van een specifiek product omhoog of omlaag gaat ten opzichte van de voorspelde prijs.

De gegevensbron die we voor dit artikel zullen gebruiken is een JSON-bestand, en we zullen de productprijzen vergelijken die we krijgen van Amazon, eBay en Walmart. Onze voorbeeldgegevens zien er als volgt uit,

Spring gerust naar een sectie om meer te leren over web scraping voor prijsvergelijking in python!

Inhoudsopgave

Stappen in Web Scraping voor Prijsvergelijking:

[
  {
    "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"
  }
]
Enkele belangrijke velden die relevant zijn voor het script dat we schrijven zijn amazon_price, ebay_price en walmart_price.

Nu hebben we onze gegevens gezien. Dus laten we beginnen met de ontwikkelingsfase.

We maken de tool in Python 3.x, en gebruiken allereerst de JSON bibliotheek voor het parsen van JSON en verdere verwerking. De tool biedt verbazingwekkende functionaliteit door de productnaam en prijs van de site af te drukken. We importeren de JSON bibliotheek om JSON te parsen.
json importeren

Nu roepen we de functie open() in het codefragment aan om de inhoud van het JSON-bestand te lezen,

json importeren 
 
Als __name__ == '__main__':
    prijsgegevens = Geen
    prijs = []
   met open('data.json', encoding='utf8') als f:
        price_data = f.read()
 
   als prijs_data geen is:
       json_prijs_data = json.loads(prijs_data)

Nu onze JSON-gegevens zijn ingelezen, zullen we ze converteren naar de ingebouwde datastructuren van Python, waarvoor de code de methode json.loads() zal aanroepen om de JSON-string te converteren naar een woordenboek of een lijst van woordenboeken, afhankelijk van de invoer.

Aangezien het hoofddoel is om de winkel te vinden die het product tegen de laagste prijs verkoopt, is ons doel om de minimumprijs en andere relevante details zoals het product en de winkelnaam te vinden. De prijsinformatie van de relevante winkel wordt opgeslagen in de sleutels amazon_price, ebay_price en Walmart_price. Om het minimum van elk product te vinden, moeten we de items in de prijslijst itereren.
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 = []

We gebruiken lambdas en stellen de sleutel van min() in om ervoor te zorgen dat het prijsveld wordt vergeleken. Het levert de volgende uitvoer op:

Laten we de indeling een beetje aanpassen.

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 = []

Dit geeft de volgende uitvoer:

Gefeliciteerd! We hebben met succes het script gemaakt dat je periodiek kunt uitvoeren om de bijgewerkte prijzen van het product te krijgen.

Wat is de beste Proxy voor Web Scraping voor prijsvergelijking met behulp van Python?

ProxyScrape is een van de populairste en betrouwbaarste proxy providers online. Drie proxy services omvatten dedicated datacenter proxy servers, residentiële proxy servers en premium proxy servers. Dus, wat is de best mogelijke oplossing voor de beste HTTP proxy voor web scraping voor prijsvergelijking met behulp van python? Voordat je die vraag beantwoordt, kun je het beste eerst de functies van elke proxy server bekijken.
Een dedicated datacenter proxy is het meest geschikt voor snelle online taken, zoals het streamen van grote hoeveelheden gegevens (qua grootte) vanaf verschillende servers voor analysedoeleinden. Dit is een van de belangrijkste redenen waarom organisaties kiezen voor dedicated proxies voor het verzenden van grote hoeveelheden gegevens in korte tijd.

Een dedicated datacenter proxy heeft verschillende functies, zoals onbeperkte bandbreedte en gelijktijdige verbindingen, dedicated HTTP proxies voor eenvoudige communicatie en IP-authenticatie voor meer beveiliging. Met 99,9% uptime kunt u er zeker van zijn dat het dedicated datacenter altijd werkt tijdens elke sessie. Last but not least, ProxyScrape biedt een uitstekende klantenservice en zal je helpen om je probleem binnen 24-48 kantooruren op te lossen. 

De volgende is een residentiële proxy. residentiële is een go-to proxy voor elke algemene consument. De belangrijkste reden hiervoor is dat het IP-adres van een residentiële proxy lijkt op het IP-adres van de ISP. Dit betekent dat het verkrijgen van toestemming van de doelserver om toegang te krijgen tot zijn gegevens gemakkelijker zal zijn dan normaal. 

De andere functie van ProxyScrape's residentiële proxy is een roterende functie. Een roterende proxy helpt je een permanente ban op je account te voorkomen omdat je residentiële proxy dynamisch je IP-adres verandert, waardoor het voor de doelserver moeilijk is om te controleren of je een proxy gebruikt of niet. 

Afgezien daarvan zijn de andere kenmerken van een residentiële proxy : onbeperkte bandbreedte, samen met gelijktijdige verbinding, toegewijde HTTP/s proxies, proxies op elk moment sessie vanwege 7 miljoen plus proxies in de proxy pool, gebruikersnaam en wachtwoord authenticatie voor meer veiligheid, en last but not least, de mogelijkheid om de landserver te wijzigen. Je kunt de gewenste server selecteren door de landcode toe te voegen aan de gebruikersnaamauthenticatie. 

De laatste is de premium proxy. Premium proxies zijn hetzelfde als dedicated datacenter proxies. De functionaliteit blijft hetzelfde. Het belangrijkste verschil is de toegankelijkheid. In premium proxies wordt de lijst proxy (de lijst die proxies bevat) beschikbaar gemaakt voor elke gebruiker op ProxyScrape's netwerk. Daarom kost premium proxies minder dan dedicated datacenter proxies.
Dus, wat is de best mogelijke oplossing voor de beste HTTP proxy voor web scraping voor prijsvergelijking met behulp van python? Het antwoord zou zijn "residentiële proxy." De reden is eenvoudig. Zoals hierboven gezegd, is de residentiële proxy een roterende proxy, wat betekent dat je IP-adres dynamisch zou veranderen over een periode van tijd, wat handig kan zijn om de server te misleiden door het verzenden van veel verzoeken binnen een klein tijdsbestek zonder het krijgen van een IP-blokkering. 

Vervolgens kun je het beste de proxy server wijzigen op basis van het land. Je hoeft alleen maar de ISO_CODE van het land toe te voegen aan het einde van de IP-authenticatie of de authenticatie met gebruikersnaam en wachtwoord. 

Aanbevolen lectuur:

FAQ's:

1. Wat is prijsschrapen?
Prijsschrapen is, zoals de naam al doet vermoeden, het proces waarbij de prijs van een product of dienst online wordt geëxtraheerd om een analyse uit te voeren, zoals een concurrentieanalyse, om de marketingstrategie te verbeteren. Het automatiseren van het schraapproces kan je helpen om tijd en middelen te besparen, en dat kun je doen met behulp van Python.
2. Wat is de beste proxy voor web scraping voor prijsvergelijking?
The best proxy to perform web scraping for price comparison is a “residential proxy.” The reason is that the residential proxy is a rotating proxy, meaning that your IP address would be dynamically changed over a period of time which can be helpful to trick the server by sending a lot of requests within a small time frame without getting an IP block.
3. Is web scraping voor prijsvergelijking legaal?
Het antwoord is ja. Je kunt de prijs van een e-commerce website scrapen omdat alle informatie beschikbaar is voor het publiek, wat betekent dat alle openbare gegevens kunnen worden gescrapped.

Conclusie

In dit artikel hebben we nog een wonder van web scraping verkend, namelijk "Prijsvergelijking". Niet alleen dit, we hebben een tool gebouwd die de prijsvergelijking voor je kan doen en je op de hoogte kan houden van de markttrends. Dit artikel hoopt voldoende informatie te geven over web scraping voor prijsvergelijking op een eenvoudige manier. Een proxy server is de beste metgezel voor web scraping. ProxyScrape biedt het beste in zijn klasse residentiële proxy voor uw web scraping voor prijsvergelijkingsprojecten. Je kunt de beste residentiële proxy hier bekijken.