Heim BlogWeb-Scraping Amazon-Wettbewerbsanalyse: Schritt-für-Schritt-Anleitung

Amazon-Wettbewerbsanalyse: Schritt-für-Schritt-Anleitung

von Kadek

Schritt 4: Amazon-Produktdaten extrahieren

Nachdem wir nun unsere ASIN-Listen haben, können wir den Structured Data Endpoint nutzen, um die detaillierten Produktdaten zu erhalten, die wir für unsere Analyse benötigen.

Notiz: Lesen Sie mehr über unseren Structured Data Endpoint und das damit verbundene Scraping von Amazon.

Wir beginnen mit der Erstellung einer neuen CSV-Datei mit dem Namen products_info.csv um die Produktdaten zu speichern, die wir extrahieren.

Verwendung der csv.writer Funktion richten wir ein Writer-Objekt ein, um in diese Datei zu schreiben.

Die erste Zeile, die in die Datei geschrieben wird, enthält die Überschriften „Name“, „Marke“, „Preis“, „Gesamtbewertungen“ und „Bewertungen“. Dabei handelt es sich um die Daten, die wir für jedes Produkt sammeln.

with open('products_info.csv', 'w', newline='', encoding='utf-8') as file:
    csv_writer = csv.writer(file)
    csv_writer.writerow(('Name', 'Brand', 'Price', 'Total Reviews', 'Ratings'))

Wir durchlaufen jede ASIN in unserer ASIN-Liste. Anschließend bereiten wir für jede ASIN eine Nutzlast mit unserem API-Schlüssel, der ASIN und dem Ländercode (in diesem Fall „uns“) vor.

Diese Nutzlast wird zum Abrufen detaillierter Produktdaten verwendet.

for asin in ASINS:
        product_payload = {
            'api_key': API_KEY,
            'asin': asin,
            'country': 'us'
        }


Für jede ASIN in unserer Liste stellen wir eine Anfrage an den Produktendpunkt von ScraperAPI:

https://api.scraperapi.com/structured/amazon/product

Nach Erhalt einer erfolgreichen Antwort analysieren wir die JSON-Daten mit den detaillierten Produktinformationen.

 try:
            product_response = requests.get('https://api.scraperapi.com/structured/amazon/product', params=product_payload)
            if product_response.status_code == 200:
                product_data = product_response.json()

So würden die Produktdaten im JSON-Format aussehen:

{
        "name": "Wireless Earbuds Bluetooth Headphones 80hrs Playback Ear Buds IPX7 Waterproof & Power Display with ENC Noise Canceling Mic Over-Ear Stereo Bass Earphones with Earhooks for Sports/Workout/Running",
        "product_information": {
            "package_dimensions": "4.29 x 3.5 x 1.54 inches",
            "item_weight": "5 ounces",
            "asin": "B0CPWGWZWP",
            "item_model_number": "BX17",
            "customer_reviews": {
                "ratings_count": 109,
                "stars": 5
            },
            "best_sellers_rank": (
                "#40,680 in Electronics (See Top 100 in Electronics)",
                "#2,540 in Earbud & In-Ear Headphones"
            ),
            "date_first_available": "December 10, 2023",
            "manufacturer": "Catitru",
            "number_of_items": "1"
        },
        "brand": "Brand: Catitru",
        "brand_url": "https://www.amazon.com/Catitru/b/ref=bl_dp_s_web_115788612011?ie=UTF8&node=115788612011&field-lbr_brands_browse-bin=Catitru",
        "full_description": "Product Description Catitru Wireless Earbuds Sport High Quality Stereo Sound ENC Noise Cancelling 80hrs Playtime IPX7 Waterproof & Sweat Resistant Unique Button Design Designed for Sports",
        "pricing": "$89.99",
        "shipping_price": "FREE",
        "availability_status": "In Stock",
        "images": (
            "https://m.media-amazon.com/images/I/41ITCINhi6L.jpg",
            "https://m.media-amazon.com/images/I/51Fdl0Ko4CL.jpg",
            "https://m.media-amazon.com/images/I/51Cd28kpBAL.jpg",
            "https://m.media-amazon.com/images/I/51BUgPqvL5L.jpg",
            "https://m.media-amazon.com/images/I/51yeY3NUeOL.jpg",
            "https://m.media-amazon.com/images/I/51MwrWN5EML.jpg",
            "https://m.media-amazon.com/images/I/51asM0-26dL.jpg"
        ),
        "product_category": "Electronics > Headphones, Earbuds & Accessories > Headphones & Earbuds > Earbud Headphones",
        "average_rating": 5,
        "feature_bullets": (
            "【Sports Comfort & IPX7 Waterproof】- BX17 wireless headphones Designed with elastic and soft ear hooks, these Bluetooth sports earbuds stay securely in place and provide ultimate comfort even during extended workout sessions. The earphones come with three different sizes of ear tips, ensuring a perfect fit for various ear sizes. With an IPX7 waterproof rating, they effectively resist water splashes and sweat, making them ideal for sports, fitness, workouts, and running.",
            "【Fast Pairing & Wide Compatibility】- BX17 wireless earbuds Built in hall switch, headphones wireless bluetooth will auto power on and connect with your last device once you open the charging case after first connection, which is faster and more convenient.",
            "【ENC Noise Cancelling Earbuds and Immersive Stereo】- BX17 ear buds have strong 12mm speakers driving units and in ear acoustic structure support, which produces a strong bass and bright treble. The unique acoustic design of the cavity room, balanced internal and external air pressure, avoid sound loss, ensure stable sound and penetrating power, even in a noisy environment can provide clear voice detection. You can enjoy your personal space whether you are indoors, work or exercise.",
            "【Upgraded 80H Playtime & LED Power Display】- BX17 upgraded Bluetooth earbuds with a longer battery charging case, it has 15 hrs more playtime than BX17 1st generation. Up to 80 hrs of total listening time in turn, one earbud can be used for 15 hours on one charge. The case can provide extra 8 times the full charge for earbuds. The ear buds wireless bluetooth earbuds with a dual digital power display case, easy to know the remaining power in real-time while opening or closing the case.",
            "【Type-C Fast Charging and Intuitive Button Touch Controls】- Our wireless charging case can be used with a fast Type-C cable. The button control feature provides a hassle-free user experience, with just one touch, you can always be in control of your audio experience, easily controlling music playback, adjusting volume and managing calls. All at your fingertips."
        ),
        "total_reviews": 109,
        "model": "BX17",
        "ships_from": "Amazon",
        "sold_by": "Yishenghuimaoyiyouxiangongsi",
        "aplus_present": true
    }



Aus diesen JSON-Daten extrahieren wir nur wichtige Details – Name, Marke, Preis, Gesamtzahl der Rezensionen und durchschnittliche Bewertung, die wir in unsere CSV-Datei schreiben und die Daten für jedes Produkt speichern.

Wir verwenden das CSV-Format, da es einfacher zu bearbeiten ist, wenn wir unsere Analyse in Excel durchführen.

csv_writer.writerow((
                product_data.get('name'),
                product_data.get('brand'),
                product_data.get('pricing'),
                product_data.get('total_reviews'),
                product_data.get('average_rating')
            ))



Wir bieten auch eine Fehlerbehandlung für alle erfolglosen Anfragen oder Ausnahmen an, um sicherzustellen, dass wir über alle Probleme während des Datenextraktionsprozesses informiert sind.

else:
                print(f"Error for ASIN {asin}: Received status code {product_response.status_code}")
        except requests.RequestException as e:
            print(f"Failed to fetch data for ASIN {asin}: {e}")

Schritt 5: Bereinigen von Amazon-Daten zur Analyse

So sieht unsere CSV-Datei aus produkt_info.csv sieht aktuell aus:

Amazon-Produktdaten exportierenAmazon-Produktdaten exportieren

Wenn man sich die Datei ansieht, gibt es einige Probleme mit der Datenintegrität:

  • Die Produktnamen sind ziemlich lang und enthalten überschüssige Informationen, die für unsere Analyse möglicherweise nicht erforderlich sind.
  • Die Markennamen enthalten zusätzlichen Text wie „Besuchen Sie den PocBuds Store“, der für unsere Analyse nicht benötigt wird.
  • Die Preise enthalten ein Dollarzeichen („$“), wodurch sie im Datensatz zu Zeichenfolgen werden. Für jede numerische Analyse müssen wir diese in ein numerisches Format konvertieren.

Um diese Datenintegritätsprobleme anzugehen und unseren Datensatz für die Analyse vorzubereiten, werden wir:

  • Löschen Sie die Spalte „Name“: In diesem Artikel konzentrieren wir uns auf die Preis- und Bewertungsanalyse. Da die Produktnamen zu detailliert sind, entfernen wir diese Spalte und verwenden die Spalte „Marke“ als Referenz.
  • Bereinigen Sie die Spalte „Marke“: Wir entfernen zusätzlichen Text wie „Besuchen Sie den (Marken-)Store“, um klare und prägnante Markennamen zu erhalten.
  • Formatieren Sie die Spalte „Preis“: Außerdem konvertieren wir die Preiswerte von Zeichenfolgen in ein numerisches Format, indem wir das Dollarzeichen („$“) entfernen und den Text in eine Gleitkommazahl umwandeln.
  • Auf fehlende Werte prüfen: Wir stellen sicher, dass in den Spalten „Gesamtbewertungen“ und „Bewertungen“ keine Werte fehlen. Wenn welche gefunden werden, löschen wir die Zeilen, die sie enthalten.
  • Datenformate standardisieren: Wir stellen sicher, dass alle Daten, insbesondere in den Spalten „Bewertungen“ und „Bewertungen insgesamt“, einem einheitlichen Format folgen, um eine genaue Vergleichsanalyse zu ermöglichen.

Wir werden das verwenden pandas Bibliothek, um unsere Daten zu bereinigen, um dies zu erreichen.

Vorbereiten unseres DataFrame

Wir laden unsere CSV-Datei in eine pandas DataFrame, ein unglaublich vielseitiges Tool zur Datenmanipulation.

df = pd.read_csv('products_info.csv')

Entfernen der Spalte „Name“.

Um die Spalte „Name“ zu entfernen, verwenden wir die drop() Funktion. Die Drop-Funktion in Pandas entfernt effizient bestimmte Spalten oder Zeilen.

Indem man es einstellt axis=1wir geben die spaltenweise Operation an und inplace=True stellt sicher, dass die Änderung direkt auf unseren DataFrame angewendet wird.

df.drop('Name', axis=1, inplace=True)

Verwenden der Funktion replace()

Um sicherzustellen, dass unsere Spalte „Marke“ konsistent ist, verwenden wir die replace() Funktion. Diese Funktion sucht nach angegebenen Textmustern und ersetzt sie durch den gewünschten Text (in diesem Fall eine leere Zeichenfolge, um den unerwünschten Text zu entfernen).

Danach, strip() Entfernt alle führenden und nachfolgenden Leerzeichen und stellt so sicher, dass unsere Markennamen sauber und einheitlich sind.

df('Brand') = df('Brand').str.replace('Visit the ', '', regex=False).str.strip()
df('Brand') = df('Brand').str.replace('Brand: ', '', regex=False).str.strip()

Daten in Zahlen umwandeln

Um die Spalte „Preis“ für die numerische Analyse in Floats umzuwandeln, verwenden wir zunächst replace(); Dadurch werden die Dollarzeichen und Kommas entfernt.

Dann, astype(float) wandelt die bereinigten Zeichenfolgen in Gleitkommazahlen um und bereitet sie für alle in unserer Analyse erforderlichen mathematischen Operationen vor.

df('Price') = df('Price').str.replace(r'(\$,)', '', regex=True).astype(float)


Leere Zeilen entfernen

Um Zeilen mit fehlenden Werten zu entfernen, verwenden wir dropna(); Diese Funktion scannt den DataFrame und entfernt alle Zeilen, in denen Daten fehlen, um so die Vollständigkeit und Zuverlässigkeit unserer Analyse sicherzustellen.

Nach der Bereinigung speichern wir den verfeinerten Datensatz in einer neuen CSV-Datei. cleaning_products_info.csv. Diese Datei enthält nun optimierte und verarbeitete Daten, die zur Analyse bereitstehen.

df.to_csv('cleaned_products_info.csv', index=False)
print("Data cleaning complete, cleaned file saved.")

So sieht unsere neue CSV jetzt aus, viel präziser und bereit zur Analyse:

Bereinigen Sie Amazon-ProduktdatenBereinigen Sie Amazon-Produktdaten

Jetzt sind wir bereit, die extrahierten Daten zu verstehen und sie zu nutzen, um datengesteuerte Entscheidungen für unsere Produkteinführung zu treffen!

Related Posts

Hinterlasse einen Kommentar