ciemne logo proxyscrape

Web Scraping for Price Comparison in 2024– Easy Steps

Python, Scraping, styczeń-03-20235 minut czytania

Web scraping to sztuka pozyskiwania danych z Internetu. Jeśli chodzi o jego zastosowania, ma on ogromną liczbę aplikacji. Jednym z nich jest porównywanie cen z różnych stron internetowych. Zakupy online stały się obecnie boomem w branży, a porównywanie cen niektórych produktów stało się koniecznością. Wszyscy odwiedzamy wiele stron internetowych, gdy musimy kupić określony produkt, ale czy kiedykolwiek myślałeś o stworzeniu narzędzia do porównywania cen, które wykona tę samą pracę za Ciebie i umieści przed Tobą najlepszą ofertę?  

W tym artykule stworzymy niesamowite narzędzie do porównywania cen w Pythonie, które pozwoli ci śledzić ceny produktów z różnych źródeł i informować o wynikach różnych konkurentów na rynku. Ponadto poinformuje również firmę, czy cena konkretnego produktu wzrośnie, czy spadnie w stosunku do przewidywanej ceny.

Źródłem danych, którego użyjemy w tym artykule, będzie plik JSON, a my porównamy ceny produktów, które otrzymujemy od Amazon, eBay i Walmart. Nasze przykładowe dane wyglądają jak poniżej,

Przejdź do dowolnej sekcji, aby dowiedzieć się więcej o skrobaniu stron internetowych w celu porównania cen w Pythonie!

Spis treści

Kroki zaangażowane w Web Scraping w celu porównania cen:

[
  {
    "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"
  }
]

Niektóre z ważnych pól istotnych dla skryptu, który piszemy, to amazon_price, ebay_price i walmart_price.

Widzieliśmy już nasze dane. Przejdźmy więc do fazy rozwoju.

Stworzymy narzędzie w Pythonie 3.x, a przede wszystkim użyjemy biblioteki JSON do analizowania JSON i dalszego przetwarzania. Narzędzie zapewnia niesamowitą funkcjonalność, drukując nazwę produktu i cenę witryny. Importujemy bibliotekę JSON do analizowania JSON.

import json

Teraz wywołamy funkcję open() we fragmencie kodu, aby odczytać zawartość z pliku JSON,

import json
 
if __name__ == '__main__':
    price_data = None
    price = []
   with open('data.json', encoding='utf8') as f:
        price_data = f.read()
 
   if price_data is not None:
       json_price_data = json.loads(price_data)

Po odczytaniu naszych danych JSON, przekonwertujemy je na wbudowane struktury danych Pythona, dla których kod wywoła metodę json.loads() do konwersji ciągu JSON na słownik lub listę słowników, w zależności od wpisów.

Ponieważ głównym celem jest znalezienie sklepu, który sprzedaje produkt po najniższej cenie, naszym celem jest znalezienie ceny minimalnej i innych istotnych szczegółów, takich jak nazwa produktu i sklepu. Informacje o cenie odpowiedniego sklepu są przechowywane w kluczach amazon_price, ebay_price i Walmart_price. Aby znaleźć minimum dla każdego produktu, musimy iterować elementy listy cen.

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

Używamy lambdas i ustawiamy klucz min(), aby upewnić się, że porównywane jest pole ceny. Daje to następujące wyniki:

Zmieńmy nieco 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 = []

Spowoduje to wyświetlenie następujących danych wyjściowych:

Gratulacje! Udało nam się stworzyć skrypt, który można okresowo uruchamiać, aby uzyskać zaktualizowane ceny produktu.

Jaki jest najlepszy serwer proxy do skrobania stron internetowych w celu porównywania cen przy użyciu Pythona?

ProxyScrape jest jednym z najpopularniejszych i najbardziej niezawodnych dostawców proxy online. Trzy usługi proxy obejmują dedykowane serwery proxy w centrach danych, domowe serwery proxy i serwery proxy premium. Jakie jest więc najlepsze możliwe rozwiązanie dla najlepszego serwera proxy HTTP do skrobania stron internetowych w celu porównania cen za pomocą Pythona? Zanim odpowiemy na to pytanie, najlepiej jest zapoznać się z funkcjami każdego serwera proxy.

Dedykowany serwer proxy centrum danych najlepiej nadaje się do szybkich zadań online, takich jak przesyłanie strumieniowe dużych ilości danych (pod względem rozmiaru) z różnych serwerów do celów analitycznych. Jest to jeden z głównych powodów, dla których organizacje wybierają dedykowane serwery proxy do przesyłania dużych ilości danych w krótkim czasie.

Dedykowany serwer proxy centrum danych ma kilka funkcji, takich jak nieograniczona przepustowość i jednoczesne połączenia, dedykowane serwery proxy HTTP ułatwiające komunikację oraz uwierzytelnianie IP dla większego bezpieczeństwa. Dzięki 99,9% uptime można mieć pewność, że dedykowane centrum danych będzie zawsze działać podczas każdej sesji. Wreszcie, ProxyScrape zapewnia doskonałą obsługę klienta i pomoże rozwiązać problem w ciągu 24-48 godzin roboczych. 

Następny jest mieszkaniowy serwer proxy. Residential to proxy dla każdego konsumenta. Głównym powodem jest to, że adres IP domowego serwera proxy przypomina adres IP dostarczony przez dostawcę usług internetowych. Oznacza to, że uzyskanie pozwolenia od serwera docelowego na dostęp do jego danych będzie łatwiejsze niż zwykle. 

Inną cechą domowego serwera proxy ProxyScrapejest funkcja rotacji. Rotacyjny serwer proxy pomaga uniknąć trwałego zablokowania konta, ponieważ domowy serwer proxy dynamicznie zmienia adres IP, utrudniając serwerowi docelowemu sprawdzenie, czy korzystasz z serwera proxy, czy nie. 

Oprócz tego, inne cechy proxy mieszkaniowego to: nieograniczona przepustowość, wraz z jednoczesnym połączeniem, dedykowane proxy HTTP/s, proxy w dowolnym momencie sesji ze względu na ponad 7 milionów proxy w puli proxy, uwierzytelnianie nazwy użytkownika i hasła dla większego bezpieczeństwa, a także, co nie mniej ważne, możliwość zmiany serwera krajowego. Możesz wybrać żądany serwer, dołączając kod kraju do uwierzytelniania nazwy użytkownika. 

Ostatni z nich to proxy premium. Premium proxy są takie same jak dedykowane proxy centrów danych. Funkcjonalność pozostaje taka sama. Główną różnicą jest dostępność. W przypadku proxy premium lista proxy (lista zawierająca proxy) jest udostępniana każdemu użytkownikowi w sieci ProxyScrape. Dlatego też proxy premium kosztują mniej niż dedykowane proxy centrów danych.

Jakie jest więc najlepsze możliwe rozwiązanie dla najlepszego proxy HTTP do skrobania stron internetowych w celu porównania cen za pomocą Pythona? Odpowiedzią byłoby "mieszkaniowy serwer proxy." Powód jest prosty. Jak wspomniano powyżej, rezydencjalny serwer proxy jest obrotowym serwerem proxy, co oznacza, że adres IP użytkownika będzie dynamicznie zmieniany przez pewien okres czasu, co może być pomocne w oszukiwaniu serwera poprzez wysyłanie wielu żądań w krótkim czasie bez blokowania adresu IP. 

Następnie najlepiej byłoby zmienić serwer proxy na podstawie kraju. Wystarczy dodać kraj ISO_CODE na końcu uwierzytelniania IP lub uwierzytelniania nazwy użytkownika i hasła. 

Sugerowane lektury:

  1. Skrobanie komentarzy w YouTube - 5 prostych kroków
  2. 8 najlepszych narzędzi do skrobania stron internetowych w języku Python w 2023 roku
  3. Web Scraping dla artykułów informacyjnych przy użyciu Pythona - najlepszy sposób w 2023 roku

Najczęściej zadawane pytania:

1. Czym jest price scraping?
Price scraping, jak sama nazwa wskazuje, to proces wyodrębniania ceny produktu lub usługi online w celu przeprowadzenia dowolnej analizy, takiej jak analiza konkurencji, w celu ulepszenia strategii marketingowej. Automatyzacja procesu skrobania może pomóc w ograniczeniu czasu i zasobów, a można to zrobić za pomocą Pythona.
2. Jaki jest najlepszy serwer proxy do skrobania stron internetowych w celu porównania cen?
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. Czy skrobanie stron internetowych w celu porównania cen jest legalne?
Odpowiedź brzmi: tak. Możesz zeskrobać cenę z witryny eCommerce, ponieważ wszystkie informacje są publicznie dostępne, co oznacza, że wszystkie publiczne dane mogą zostać zeskrobane.

Wnioski

W tym artykule zbadaliśmy jeszcze jeden cud web scrapingu, czyli "porównywanie cen". Nie tylko to, stworzyliśmy narzędzie, które może wykonać zadanie porównania cen dla Ciebie i być na bieżąco z trendami rynkowymi. Ten artykuł ma na celu dostarczenie wystarczających informacji na temat skrobania stron internetowych w celu porównania cen w łatwy sposób. Serwer proxy jest najlepszym towarzyszem do skrobania stron internetowych. ProxyScrape zapewnia najlepsze w swojej klasie proxy mieszkani owe do skrobania stron internetowych w celu porównania cen. Możesz sprawdzić najlepszy serwer proxy tutaj.