dark proxyscrape logo

Web Scraping for Price Comparison in 2024– Easy Steps

Python, Scraping, Jan-03-20235 minutes de lecture

Le web scraping est l'art d'extraire des données de l'internet. Ses applications sont très nombreuses. L'une d'entre elles est la comparaison des prix de différents sites web. Les achats en ligne ont connu un véritable essor dans le secteur, et la comparaison des prix de certains produits est devenue une nécessité. Nous visitons tous plusieurs sites web lorsque nous avons besoin d'acheter un produit particulier, mais avez-vous déjà pensé à créer un outil de comparaison de prix qui ferait le même travail pour vous et placerait la meilleure offre devant vous ?  

Dans cet article, nous allons créer un outil de comparaison de prix en Python qui vous permettra de suivre le prix des produits à travers différentes sources et vous informera sur les performances des différents concurrents sur le marché. En outre, il informera également l'entreprise si le prix d'un produit spécifique augmente ou diminue par rapport au prix prédit.

La source de données que nous utiliserons pour cet article sera un fichier JSON, et nous comparerons les prix des produits que nous obtenons d'Amazon, d'eBay et de Walmart. Notre échantillon de données ressemble à ce qui suit,

N'hésitez pas à passer d'une section à l'autre pour en savoir plus sur le web scraping pour la comparaison des prix en python !

Table des matières

Étapes de l'extraction de données sur le web pour la comparaison des prix :

[
  {
    "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"
  }
]
Certains des champs importants pour le script que nous écrivons sont amazon_price, ebay_price et walmart_price.

Nous avons maintenant vu nos données. Passons donc à la phase de développement.

Nous allons créer l'outil en Python 3.x, et tout d'abord, nous utiliserons la bibliothèque JSON pour l'analyse JSON et le traitement ultérieur. L'outil fournit une fonctionnalité étonnante en imprimant le nom du produit et le prix du site. Nous importons la bibliothèque JSON pour analyser JSON.
import json

Nous allons maintenant appeler la fonction open() dans l'extrait de code pour lire le contenu du fichier JSON,

import json
 
if __name__ == '__main__':
    données_de_prix = Aucune
    prix = []
   avec open('data.json', encoding='utf8') as f :
        données_de_prix = f.read()
 
   si prix_data n' est pas None:
       json_prix_data = json.loads(prix_data)

Maintenant que nos données JSON sont lues, nous allons les convertir dans les structures de données intégrées de Python pour lesquelles le code appellera la méthode json.loads() pour convertir la chaîne JSON en un dictionnaire ou une liste de dictionnaires, en fonction des entrées.

L'objectif principal étant de trouver le magasin qui vend le produit au prix le plus bas, notre but est de trouver le prix minimum et d'autres détails pertinents tels que le produit et le nom du magasin. Les informations sur le prix du magasin concerné sont stockées dans les clés amazon_price, ebay_price et Walmart_price. Pour trouver le prix minimum de chaque produit, nous devons itérer les éléments de la liste de prix.
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 = []

Nous utilisons des lambdas et définissons la clé de min() pour nous assurer que le champ de prix est comparé. Le résultat est le suivant :

Restructurons un peu le format.

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

Le résultat est le suivant :

Nous avons réussi à créer un script que vous pouvez exécuter périodiquement pour obtenir les prix actualisés des produits. Nous avons réussi à créer un script que vous pouvez exécuter périodiquement pour obtenir les prix actualisés du produit.

Quel est le meilleur proxy pour le Web Scraping pour la comparaison des prix en utilisant Python ?

ProxyScrape est l'un des fournisseurs de proxy les plus populaires et les plus fiables en ligne. Les trois services proxy comprennent les serveurs proxy dédiés aux centres de données, les serveurs proxy résidentiels et les serveurs proxy premium. Alors, quelle est la meilleure solution possible pour le meilleur proxy HTTP pour le web scraping pour la comparaison des prix en utilisant python? Avant de répondre à cette question, il est préférable d'examiner les caractéristiques de chaque serveur proxy.
Un proxy dédié à un centre de données est le mieux adapté aux tâches en ligne à grande vitesse, telles que la transmission en continu de grandes quantités de données (en termes de taille) à partir de divers serveurs à des fins d'analyse. C'est l'une des principales raisons pour lesquelles les organisations choisissent proxys pour transmettre de grandes quantités de données en peu de temps.

Un proxy dédié à un centre de données possède plusieurs caractéristiques, telles qu'une bande passante illimitée et des connexions simultanées, un site HTTP dédié proxys pour faciliter la communication et une authentification IP pour plus de sécurité. Avec un temps de disponibilité de 99,9 %, vous pouvez être assuré que le centre de données dédié fonctionnera toujours, quelle que soit la session. Enfin, ProxyScrape offre un excellent service à la clientèle et vous aidera à résoudre votre problème dans les 24-48 heures ouvrables. 

Ensuite, il y a un proxy résidentiel. Le proxy résidentiel est le proxy de référence pour tous les consommateurs. La raison principale est que l'adresse IP d'un proxy résidentiel ressemble à l'adresse IP fournie par le FAI. Cela signifie qu'il sera plus facile d'obtenir l'autorisation du serveur cible pour accéder à ses données. 

L'autre caractéristique du proxy résidentiel de ProxyScrapeest une fonction rotative. Un proxy rotatif vous permet d'éviter une interdiction permanente de votre compte car votre proxy résidentiel change dynamiquement votre adresse IP, ce qui rend difficile pour le serveur cible de vérifier si vous utilisez un proxy ou non. 

En outre, les autres caractéristiques d'un proxy résidentiel sont les suivantes : bande passante illimitée, connexion simultanée, HTTP/s dédié proxys, proxys à tout moment de la session en raison des 7 millions de proxys dans le pool de proxy, authentification par nom d'utilisateur et mot de passe pour plus de sécurité, et enfin, la possibilité de changer le serveur du pays. Vous pouvez sélectionner le serveur de votre choix en ajoutant le code du pays à l'authentification du nom d'utilisateur. 

Le dernier est le proxy premium. Les proxys Premium sont les mêmes que les proxys dédiés aux centres de données. La fonctionnalité reste la même. La principale différence est l'accessibilité. Dans le cas du proxy premium proxys, la liste des mandataires (la liste qui contient proxys) est mise à la disposition de tous les utilisateurs du réseau ProxyScrape. C'est pourquoi le premium proxys coûte moins cher que le centre de données dédié proxys.
Alors, quelle est la meilleure solution possible pour le meilleur proxy HTTP pour le web scraping pour la comparaison des prix en utilisant python? La réponse serait "proxy résidentiel." La raison en est simple. Comme nous l'avons dit plus haut, le proxy résidentiel est un proxy rotatif, ce qui signifie que votre adresse IP change dynamiquement sur une période de temps, ce qui peut être utile pour tromper le serveur en envoyant un grand nombre de requêtes dans un court laps de temps sans obtenir un blocage d'IP. 

Ensuite, la meilleure chose à faire est de changer le serveur proxy en fonction du pays. Il suffit d'ajouter l'ISO_CODE du pays à la fin de l'authentification IP ou de l'authentification par nom d'utilisateur et mot de passe. 

Lectures suggérées :

FAQs :

1. Qu'est-ce que le grattage de prix ?
Comme son nom l'indique, le raclage de prix consiste à extraire le prix d'un produit ou d'un service en ligne afin d'effectuer une analyse, par exemple une analyse de la concurrence, pour améliorer la stratégie de marketing. L'automatisation du processus d'extraction peut vous aider à réduire le temps et les ressources, et vous pouvez le faire avec l'aide de Python.
2. Quel est le meilleur proxy pour le web scraping en vue d'une comparaison de prix ?
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. L'utilisation du web scraping pour la comparaison des prix est-elle légale ?
La réponse est oui. Vous pouvez extraire le prix d'un site de commerce électronique car toutes les informations sont mises à la disposition du public, ce qui signifie que toutes les données publiques peuvent être extraites.

Conclusion

Cet article a exploré une autre merveille du web scraping, à savoir la "comparaison de prix". En plus de cela, nous avons construit un outil qui peut faire le travail de comparaison des prix pour vous et vous tenir au courant des tendances du marché. Cet article espère donner suffisamment d'informations sur le web scraping pour la comparaison des prix d'une manière simple. Un serveur proxy est le meilleur compagnon pour le web scraping. ProxyScrape fournit le meilleur proxy résidentiel de sa catégorie pour vos projets de web scraping pour la comparaison des prix. Vous pouvez consulter le meilleur proxy résidentiel ici.